我想知道如果我的应用程序是使用4.1 SDK构建的话,我是否会遇到与OS4.0的兼容性问题,或者这不是问题?
答案 0 :(得分:2)
对您的问题的简短回答是:为您的应用程序使用至少4.0的基本SDK版本,并使用部署目标版本正好4.0。
我对这两个答案都进行了低估,因为它们是错误的,或者至少是不完整的。
构建应用程序时,您应该注意两个设置:
有基础SDK版本,它定义了您的应用程序将编译到哪个版本的SDK。
还有部署目标版本,它定义了您的应用所需的最低版本 。您可以在Xcode中将其设置为低至2.2.1,但App Store目前不接受低于3.1.3的版本。
Base SDK版本可以更高,然后是部署目标版本。这只是意味着您的应用程序向后兼容iOS的旧版本。这也意味着您的应用需要在运行时做出决策,以确保在旧版本上运行时不使用更新的功能。
例如,MFMessageComposeViewController
是在4.0中引入的,因此如果您的应用程序已配置为也在3.1.3上运行,那么您应该使用NSClassFromString()
来查找该特定类是否在您之前可用用它。
Stack Overflow上有很多关于如何发现可用功能的问题,所以我不会在这里重复这些技术。
答案 1 :(得分:0)
有点重要的说明:
行为在操作系统版本中进行更改。 3.0中有一堆变化(我们遇到UITableView / UITableViewCell问题):
此外,GCC 4.2中有一些运行时/ C ++更改,这意味着在将unsigned int / long转换为float / double或使用std :: ostringstream时,在OS 2.2.1上运行的GCC 4.2应用程序崩溃了。我已经添加了GCC版本的支票。
所以不,使用较新的SDK 编译会导致问题 - 如果有时间限制(您没有时间实施多任务支持,或者您没有时间限制),您可能不想冒风险没时间做一个完整的重新测试并修复所有错误,或者等等。或者你可能仍然希望支持2.2.1出于某种奇怪的原因(4.0降低2.x“设备支持”,这实际上使得无法在2.x设备上调试应用程序。)
通常没有什么能够破坏轻微的操作系统版本(折扣3.1 / 3.2)。我建议您尽快升级SDK;不要因为旧操作系统没有它们而回避新功能。
答案 2 :(得分:-2)
取决于您将使用的API。假设您希望实现应用程序内发短信(MFMessageComposeViewController
)并希望所有最终用户(将被定义为EU)访问该功能,那么您必须针对iOS 4.0进行编译。但是,假设你希望应用程序内的短信是可选的,对你的欧盟来说是“加”,你只需要针对iOS 3.0编译你的应用程序(比方说)。
希望我回答你的问题: - )