我在使我的应用向后兼容Mac OS X 10.6系统时遇到了一些麻烦。我已经将Crashlytics集成到应用程序中,它适用于Mac OS X 10.7 - 10.10并且工作得很好。但是,该应用程序还需要与旧版本的OS X 10.6兼容,而Crashlytics框架仅支持低至10.7。
我已经修复了第一次崩溃,因为libc ++库没有捆绑10.6,因为它是一个可选的包含。这是我无法弄清楚的下一次崩溃:未找到符号:_objc_release
如果我完全删除了应用程序内部对Crashlytics的所有调用,它就可以了。但是,如果我包含Crashlytics开始使用的那一行:[Fabric with:@[[Crashlytics class]]];
它会在使用Symbol not found: _objc_release
启动后立即崩溃。
对我来说,下一个合乎逻辑的步骤是添加一个简单的if语句来检查系统版本是否与框架兼容,但是应用程序仍然崩溃,尽管如果我删除了Crashlytics行,if语句工作正常!
我正在使用Xcode 7,Mac OS X 10.10,基本SDK设置为10.6。 以下是我尝试过的一个简单示例:
Using the suggested way by Apple:
Class cls = NSClassFromString(@"Fabric");
if(!cls)
{
[Fabric with:@[[Crashlytics class]]];
NSLog(@"Framework is installed!");
}
else
{
NSLog(@"Framework is not installed!");
}
比较系统版本号:
if(NSAppKitVersionNumber >= NSAppKitVersionNumber10_7)
{
[Fabric with:@[[Crashlytics class]]];
NSLog(@"Framework is installed!");
}
else
{
NSLog(@"Framework is not installed!");
}
我错过了一些明显的东西吗?