lms*_*lms 5 macos xcode cocoa gdb lldb
我正在 OS X 10.8 机器上使用 Xcode 4.6 开发一个应用程序。应用程序部署目标设置为10.6,这是我们需要支持的。但是,当我将应用程序存档(编译、链接和嵌入资源+框架)并将其部署(也称为复制)到 10.6 测试机时,它因通用分段错误而崩溃。在 10.7 上运行良好。
我无法在旧版 Mac 上的 Xcode 中编译该项目,因为该应用程序是使用较新的编译器构建的(它使用 ARC、隐式属性合成、新的 Objective-C 文字语法等)。它也不会进行类型检查,因为基本 SDK 是 10.8,并且它引用了 10.6 机器上的编译器不知道的一些 10.8 令牌。
关于如何调试应用程序有什么建议吗?
您很可能使用一个或多个在 10.6 上崩溃的 10.7+ API。使用 10.8 目标 SDK,您允许对该 SDK 中可用的函数进行所有调用。但是,应用程序会延迟绑定,因此当您实际不调用这些函数时,这不会崩溃。您需要进行与此类似的显式检查(此处用于全屏功能):
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_6
if (runningOnLionOrLater) {
[mainWindow setCollectionBehavior: NSWindowCollectionBehaviorFullScreenPrimary];
[toggleFullscreenItem setHidden: NO];
}
#endif
Run Code Online (Sandbox Code Playgroud)
确定当前版本的一种方法是:
int macVersion;
if (Gestalt(gestaltSystemVersion, &macVersion) == noErr) {
runningOnLionOrLater = macVersion > MAC_OS_X_VERSION_10_6;
}
Run Code Online (Sandbox Code Playgroud)
为了调试有问题的调用,只需将基本 SDK 设置为 10.6,XCode 应该标记那些在那里不可用的函数。
| 归档时间: |
|
| 查看次数: |
1726 次 |
| 最近记录: |