使应用程序向后兼容,框架问题

时间:2015-09-29 21:09:36

标签: macos frameworks crash osx-snow-leopard

我在使我的应用向后兼容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!");
}

我错过了一些明显的东西吗?

0 个答案:

没有答案