pathForAuxiliaryExecutable

pathForAuxiliaryExecutable

我的程序使用 NSTask 执行一个小的 c Unix 子程序。它通过获得一条路径来实现
NSString * path = [[NSBundle mainBundle] pathForAuxiliaryExecutable:@"appName"];
然后将该路径交给
[task setLaunchPath: path];
几乎一直都很好用。但是我偶尔会收到崩溃报告,其中“path”为零。不是说子程序崩溃了,操作系统找不到它吗?

这怎么会发生?我第一次以为是宇宙射线,但现在已经发生了大约四次。全部都在这个可执行文件上(到目前为止)。

仅供引用,该程序是代码签名的,但在 Mac 商店之外分发。这是用 Xcode 7 构建的;相关的构建阶段是 Copy Executables ,我在其中复制五个这样的可执行文件并对其进行代码签名。当我查看构建的程序时,这五个程序都位于 MacOS 中;程序中的其他任何地方都没有任何重复项。失败的一个是 176K 大小。

最佳答案

Apple Documentation :



因此,它可能会返回 nil 。我建议在使用之前通过 nil 检查来保护自己免受崩溃:

NSString *path = [[NSBundle mainBundle] pathForAuxiliaryExecutable:@"appName"];

if (path == nil) {
   NSLog("Executable does not exists");
} else {
   [task setLaunchPath: path];
}

关于objective-c - pathForAuxiliaryExecutable 有时如何为零?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33195204/

10-10 20:34