小编gui*_*low的帖子

为什么优化会破坏此功能?

我们最近在大学里开了一个关于多种语言编程特色的讲座.

讲师写下了以下功能:

inline u64 Swap_64(u64 x)
{
    u64 tmp;
    (*(u32*)&tmp)       = Swap_32(*(((u32*)&x)+1));
    (*(((u32*)&tmp)+1)) = Swap_32(*(u32*) &x);

    return tmp;
}
Run Code Online (Sandbox Code Playgroud)

虽然我完全理解这在可读性方面也是非常差的风格,但他的主要观点是这部分代码在生产代码中运行良好,直到它们实现了高优化级别.然后,代码将什么都不做.

他说,变量的所有赋值tmp都将由编译器优化.但为什么会这样呢?

我知道有些情况下变量需要声明为volatile,这样编译器就不会触及它们,即使他认为它们永远不会被读或写,但我不知道为什么会发生这种情况.

c c++ optimization endianness strict-aliasing

49
推荐指数
3
解决办法
4343
查看次数

为什么这样做:从std :: string函数返回C字符串文字并调用c_str()

我们最近在大学里做了一个讲座,我们的教授告诉我们在使用不同语言编程时需要注意的不同事项.以下是C++中的一个示例:

std::string myFunction()
{
    return "it's me!!";
}

int main(int argc, const char * argv[])
{
    const char* tempString = myFunction().c_str();

    char myNewString[100] = "Who is it?? - ";
    strcat(myNewString, tempString);
    printf("The string: %s", myNewString);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这会失败的原因是return "it's me!!"使用char []隐式调用std :: string构造函数.该字符串从函数c_str()返回,函数返回指向数据的指针std::string.

由于函数返回的字符串未在任何地方引用,因此应立即取消分配.这就是理论.

但是,让这段代码运行没有问题.很想知道你的想法.谢谢!

c++

43
推荐指数
2
解决办法
4528
查看次数

Mac App Store可以免费下载付费应用

我有一个应用程序,我很快就会进入Mac App Store.这将是一个付费的应用程序.

这是我发送的第一个应用程序,所以请原谅我到目前为止缺乏知识.我有一些人在测试和开发过程中帮助了我很多.

作为某种奖励,我们安排他们每个人都可以免费获得他的应用程序版本.问题是我在开始时并没有想到代码签名和安全性,现在我有点陷入两难境地.我当然可以给他们一个非代码签名版本的应用程序,但我不希望在将来更新的情况下为这些版本提供另一个开发分支.

他们是否有可能通过某种"优惠券"合法地从App Store下载应用程序?

macos code-signing app-store

6
推荐指数
1
解决办法
655
查看次数

具有回调功能的ObjC/C/C++高分辨率计时器

我确信之前已经问过这个问题所以我当然使用搜索功能检查是否有解决问题的答案.

然而,我所能找到的只是高精度测量时间的很多答案.

我需要的是一个高分辨率(至少毫秒)的计时器,它允许我在定义的时间段过去时触发回调.我想在Cocoa Mac OS X应用程序中使用它,因此可以使用C/C++或Obj-C.如果需要额外的库,那么这也很好.

我发现这个http://www.songho.ca/misc/timer/timer.html但是它使用了繁忙的等待策略,并且我认为会花费太多的性能.

非常感谢帮助!

c c++ timer objective-c callback

5
推荐指数
2
解决办法
2747
查看次数

使用"动画"以编程方式单击NSPushButton

我刚刚从其他编程语言/框架中遇到了一个问题.每当用户点击键盘上的某个按钮时,他就会触发与按下GUI中某个按钮时相同的动作.(有些人把这些称为"捷径"; D)

为了给用户提供光学反馈,我想按编程方式"单击"按钮,而不是调用单击按钮时调用的相同函数.

如果我将按钮设置为IB中的等效键,它看起来就像我想要的那样.这里不能这样做,因为如果右侧文本字段具有焦点,则应该启用快捷方式.

无法在NSButton或类似的方法中找到一个听起来正确的方法.我相信你们可以给我一些方向!

最好的,并提前感谢

cocoa keyboard-shortcuts objective-c nsbutton

4
推荐指数
1
解决办法
2966
查看次数

按钮大小更改时增加按钮字体大小

我有一个Qt应用程序,主窗口有五个按钮按垂直顺序排列.它们都有相同的尺寸.

我想要做的就是在应用程序全屏显示时增加按钮标签的字体大小.我真的很感激一个不需要太多代码的解决方案...希望这可以在Qt Designer中完成,但我找不到如何做的方法.

有什么建议?

最好,

guitarflow

qt resize fullscreen

3
推荐指数
1
解决办法
2354
查看次数

使用OpenCV识别的完美对象

我有一个应用程序,我想一次跟踪2个对象,在图片中相当小.此应用程序应该在Android和iPhone上运行,因此算法应该是高效的.

对于我的客户来说,如果我们提供一些模式以及附加到要跟踪的对象的软件以获得一个可识别的目标,那就完美了.

这意味着我可以自己制作一个模式.由于我对图像处理的影响不大,我不知道哪些对象在图片中最容易识别,即使它们相当小.尽管由于产生的开销而不希望单独处理多个平面,但颜色也是可能的.

谢谢你的任何建议!! 最好,

guitarflow

iphone android opencv pattern-matching object-detection

3
推荐指数
1
解决办法
2048
查看次数

将拖放事件转发到父视图

我有一个应用程序,其中有一个自定义视图,该视图派生自NSView。在此视图中,有几个自定义子视图,这些子视图也源自NSView。

我想实现一种拖放行为,该行为允许将URL拖放到视图上。一切都已经可以用于主视图了。

因此,实际上,我将不得不在子视图和父视图类上实现拖动行为处理程序。事实是,我不想将完整的处理代码复制到所有子视图中,以使它们也接受拖动事件。因此,我认为这是让他们将所有拖动事件转发到父视图的最佳方法。

这有可能吗?不知道我是否可以通过响应者链进行设置?

任何提示,高度赞赏!提前致谢。

cocoa drag-and-drop objective-c nsview nsresponder

2
推荐指数
1
解决办法
1359
查看次数

什么是*.dll.s文件以及它们用于什么?

我目前正在使用Unity框架开发iOS项目.

当我从Unity导出Xcode项目时,导出了大量文件.除了一些源文件,还有Mono项目的.dll文件.

但也有.dll.s文件.对于故障排除,了解它们的用途会很棒.每个dll都有一个.dll.s文件,所以它可能是某种编译到dll中的源代码?

当代码中的某些地方存在异常时,Xcode会跳转到其中一个.dll.s文件中,看起来它们包含某种汇编代码.

方向会很好,谷歌在这里并没有真正的帮助......

TIA,

最好的祝福,

弗洛

dll mono assembly file-format unity-game-engine

2
推荐指数
1
解决办法
895
查看次数

现代Cocoa应用程序中的错误处理

我是一名计算机科学专业的学生,​​我即将完成.我们现在必须用我们选择的语言编写完整的应用程序.我们选择了Objective-C,因为我们都是Mac人.

为了让我们的教授满意,还有一些事情需要做:-)一项任务是:

选择一种方法来处理应用程序中的错误.确保可能发生的所有错误都得到妥善处理!

从我们课程的一开始,我们一直在学习Java.所以我们知道Java人员的大多数错误处理都是例外.

我在网上阅读了很多资源和文件.我还阅读了Aaron Hillegass的书"Mac OS X的Cocoa编程".我(几乎)从未在Cocoa编程的上下文中阅读有关异常的任何内容.

我想知道的是你们如何在Objective-C代码中实现错误处理?我当然以某种方式处理我的错误,但它背后没有任何概念.

error-handling cocoa exception

1
推荐指数
1
解决办法
180
查看次数

按索引访问shell脚本参数

当你进入shell编程时,我确信这是一个明智的选择.不幸的是我不是,而且我很难过......

我需要验证传递给shell脚本的参数.我还想存储在数组中传递的所有参数,因为我稍后需要进一步分离.

我有一个参数"-o",必须后跟0或1.因此,我想检查以下参数是否有效.这是我试过的:

# Loop over all arguments
for i in "$@"
do
    # Check if there is a "-" as first character,
    # if so: it's a parameter
    str="$i"
    minus=${str:0:1}

    # Special case: -o is followed by 0 or 1
    # this parameter needs to be added, too
    if [ "$str" == "-o" ]
    then
        newIdx=`echo $((i+1))`   # <-- problem here: how can I access the script param by a generated index?
        par="$($newIdx)"

        if [[ "$par" != "0" || …
Run Code Online (Sandbox Code Playgroud)

parameters bash shell scripting

1
推荐指数
1
解决办法
3755
查看次数

在运行时更改Cocoa应用程序图标,标题和菜单标签

我有一个应用程序应该有两种不同的操作模式:让我们称它们为模式1和模式2.

我只能评估应用程序启动后应用程序应使用的模式(检查许可证详细信息).最简单的选择是提供2个二进制文件并决定应用程序在编译时使用的模式.但这不是我想要做的,因为应用程序的代码差别很小.我宁愿做一些运行时魔法.

根据要使用的模式,让应用更改其标题,应用图标和菜单标签的最佳方法是什么?

我尝试了菜单栏中显示的应用程序名称,虽然我可以修改标题但它不使用粗体字体而是常规字体.[NSMenu标题]只是一个常规(非属性)字符串,所以我认为AppKit在启动应用程序并从Info.plist(CFBundleName)中提取名称时正在做一些魔术.

我还考虑过更改应用程序的Info.plist文件,但这会有两个问题:

  1. 应用程序需要重新启动(不是那么糟糕)
  2. 应用程序需要重新签名(非常糟糕)

期待您的建议!

macos cocoa objective-c

1
推荐指数
1
解决办法
1749
查看次数

通过 NSPipe 或 NSFileHandle 将 EOF 发送到 NSTask

我有一个 NSTask 处理从标准输入传递的参数。参数通过NSFileHandle.

它工作正常,但我们的命令行工具从 stdin 读取输入,直到它收到 EOF 符号(按 Ctrl+C)。

我不认为我可以将 EOF 符号添加到 ASCII 字符串中,那么有哪些选项呢?任何反馈表示赞赏!

提前致谢!

cocoa stdin nstask eof nspipe

0
推荐指数
1
解决办法
650
查看次数