iphone - 如何支持从 iOS 4.3 到 iOS 7 版本的应用程序

标签 iphone xcode ios4 ios7 xcode5

我已经使用 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/

相关文章:

iphone - 帮助解读苹果崩溃报告

ios - 为什么navigationBar和view之间显示黑屏

ios - Xcode 错误 NSException

xcode - 字典可选?快速困惑

objective-c - 带有动态字符串的 UIImage 错误

iphone - 停止在 UIWebView 中播放视频

iphone - 以编程方式将 UIButton 添加到 Storyboard View

iphone - 关于来自 UITapGestureRecognizer 的消息

iphone - 如何从电话的地址簿中选择某个号码?

iphone - 如何格式化 NSDate?