Mac OS:在最新版本的OS上运行带有旧基础SDK的应用程序

时间:2012-04-25 13:32:42

标签: objective-c xcode macos osx-snow-leopard

这可能听起来像是一个新手问题,但我是Mac OS新手,

这里我有一个带有旧版Base SDK的编译应用程序,比如10.5版本,它在Mac OS 10.5版本上运行没有任何问题。

在最新版本的Mac OS 10.6,10.7上,它在某些情况下工作不正确。

旧的应用程序应该在新版本的操作系统中保持兼容,基本上我想知道Apple如何在新版本的Mac OS中保持与旧应用程序的兼容性?

1 个答案:

答案 0 :(得分:0)

Apple通常会非常小心地确保其API的向后兼容性,以便在升级操作系统时旧应用程序不会中断。它们不会删除APIS,只是将它们标记为已弃用。

最有可能的是,您的应用程序正在做一些不受支持或存在错误的应用程序,因为Apple已经更改了其API的实现。

我的头脑中有一些可能的原因

  • 您的应用使用已更改的Apple私有API。
  • 您的应用将一些无效参数传递给实施已更改的API(示例可能使用int,其中API需要NSInteger)。
  • 您的应用无意中利用了一个现已解决的错误(例如垃圾收集和NSOperationQueues存在于10.5但非常多的测试版)。

尝试使用针对最新API的当前Xcode重新编译应用程序,同时启用-Wall警告标志并启用静态分析器。这将告诉您使用弃用API的位置,关于pargument和return类型的错误假设以及许多其他问题。