提问人:sujay 提问时间:1/8/2014 最后编辑:kyrylomyrsujay 更新时间:1/8/2014 访问量:639
如何支持从 iOS 4.3 到 iOS 7 版本的应用程序
How to support an application from iOS 4.3 to iOS 7 versions
问:
我使用 Xcode 5 构建了我的应用程序以支持 iOS 6 或更高版本。我希望同一个应用程序在低于 6 的版本上运行。 我没有使用自动布局。我更改了所有笔尖文件以使用 os 4.3 或更高版本构建。但是不推荐使用的方法在旧版本上不起作用,支持多个ios版本(在我的情况下是ios 4.3到ios 7.0)的最佳方法是什么?
答:
请避免将部署目标设为 4.3。使用此链接 目前没有使用 4.3 的设备。浪费时间
如果要将部署目标为 4.3 的应用程序,则可以仅使用本机代码或 Xib。
因为自动布局不支持 4.3 和 5.0
stroyboard 不支持 4.3
http://www.raywenderlich.com/42591/supporting-multiple-ios-versions-and-devices 可以给你很好的建议。
文章的简短部分:
不支持的类
有时,您希望使用存在于
基础 SDK,但不在部署目标中。为此,您需要
在运行时检查此类的可用性以避免崩溃
你的应用。它崩溃了,因为这是运行时将要执行的操作
如果您尝试使用不存在的类,请执行此操作。从 iOS 4.2 开始,
类是弱链接的,因此可以使用 +Class 方法执行
运行时检查。例如:Objetive-C
if ([SLComposeViewController class]) {
//Safe to use SLComposeViewController } else {
//Fail gracefully }
不支持的方法
同样,如果在基本 SDK 中使用部署中不存在的方法
目标,您可以通过使用一点内省来避免令人讨厌的崩溃。
方法和意志
两者都可以解决问题,如下面的代码示例所示:-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 }
评论
我想给你的建议是,首先按版本阻止你的代码。我的意思是为弃用的方法(如 IOS 7、IOS 6)制作块。然后尝试找出该版本支持的适当方法。但据我所知,你不能像 4.3 那样完全支持 7 版。
正如@rckoenes所说,我也不会在 6.0 以下提供支持。祝你好运。80% is on iOS 7 the rest is on 6 and some are on 5. 4.3 is hardly used
评论
respondsToSelector: