我刚刚收到一位用户的报告,当他尝试启动我的应用程序的新版本时,它在他的机器上崩溃了。崩溃报告是:
进程:MyApp [222] 路径:/Applications/MyApp.app/Contents/MacOS/MyApp 标识符:com.MyCompany.MyAppAppAndImporter 版本:??? (???) 代码类型:X86-64 (Native) 父进程:launchd [155]
日期/时间:2010-09-04 14:27:21.668 -0400 操作系统版本:Mac OS X 10.5.8 (9L30) 报告版本:6 匿名 UUID:8F8B3FDF-6F95-463B-AC8F-170775D224D2
异常类型:EXC_BREAKPOINT (SIGTRAP) 异常代码:0x0000000000000002、0x0000000000000000 线程崩溃:0
Dyld 错误消息:找不到符号:_OBJC_CLASS_$_NSURL 引用自:/Applications/MyApp.app/Contents/MacOS/MyApp 预期在:/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
用户在 3.06 GHz Core 2 Duo Macbook Pro 上运行 OS X 10.5.8。我可以在我的 PowerBook G4 上的 Tiger and Leopard 和我的 iMac 上的 Snow Leopard 上很好地启动该应用程序。至少一名用户能够在 Snow Leopard 下正常启动该应用程序。从我的(诚然很小的)样本集中,我认为问题是特定于运行 Leopard 的 64 位机器。
我的项目使用 10.6 SDK 编译,部署目标设置为 10.4。
我使用 10.5 SDK 重新编译,问题就消失了。我最好的猜测是它与 NSURL 在 Snow Leopard 中从 Foundation 移动到 CoreFoundation 有关(请参阅http://www.cocoabuilder.com/archive/cocoa/280239-nsurl-crash.html?q=%22nsurl+crash%22# 280239 )。我不明白的是为什么它可以在我的(32 位)PowerBook G4 上正常工作,但不能在用户的 64 位 Intel Mac 上运行,即使两者都运行 Leopard。
关于如何解决这个问题或究竟为什么会发生的任何想法?