我已经使用 xcode 5 构建了我的应用程序以支持 ios 6 或更高版本。我希望相同的应用程序可以在低于 6 的版本上运行。 我没有使用自动布局。我更改了所有 nib 文件以使用 os 4.3 或更高版本构建。但是已弃用的方法不适用于旧版本。支持多个 ios 版本的最佳方法是什么(在我的情况下是 ios 4.3到ios 7.0)?.
最佳答案
http://www.raywenderlich.com/42591/supporting-multiple-ios-versions-and-devices可以给你好的建议。
文章的简短部分:
不支持的类
有时您想使用存在于的类
您的基础 SDK,但不在您的部署目标中。为此,您需要
在运行时检查此类的可用性以避免崩溃
你的应用程序。它会崩溃,因为这是 Objetive-C
运行时会发生的事情
如果您尝试使用不存在的类,请执行以下操作。从 iOS 4.2 开始,
类是弱链接的,因此您可以使用 +class 方法来执行
运行时检查。例如:
if ([SLComposeViewController class]) {
//Safe to use SLComposeViewController } else {
//Fail gracefully }
不支持的方法
同样,如果您在基础 SDK 中使用部署中不存在的方法
目标,您可以通过一点自省(introspection)来避免严重的崩溃。
方法 -respondsToSelector:
和 +instancesRespondToSelector:
将
两者都可以解决问题,如下面的代码示例所示:
if
([self.image respondsToSelector:@selector(resizableImageWithCapInsets:resizingMode:)])
{
//Safe to use this way of creating resizable images } else {
//Fail gracefully }
验证类方法是否存在也是如此,只不过您在类上调用respondsToSelector: 本身,就像这样:
if ([UIView
respondsToSelector:@selector(requiresConstraintBasedLayout)]) {
//Safe to use this method } else {
//Fail gracefully }
关于iphone - 如何支持从 iOS 4.3 到 iOS 7 版本的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20991850/