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

时间:2014-01-08 09:39:10

标签: iphone xcode ios4 ios7 xcode5

我使用xcode 5构建我的应用程序以支持ios 6或更高版本。我希望相同的应用程序可以在小于6的版本上运行。 我没有使用自动布局。我用os 4.3或更高版本更改了我的所有nib文件。但是已弃用的方法在旧版本上不起作用。支持多个ios版本的最佳方法是什么(在我的情况下是ios 4.3)到ios 7.0)?。

3 个答案:

答案 0 :(得分:3)

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中使用了部署中不存在的方法  目标,你可以通过使用一点内省来避免令人讨厌的崩溃。  方法-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 }

答案 1 :(得分:2)

请避免将部署目标设为4.3。使用此链接目前没有使用4.3的设备。浪费时间

如果您想要部署目标为4.3的应用程序,则只能使用本机代码或xib。

因为自动布局不支持4.3和5.0

stroyboard不支持4.3

enter image description here

https://mixpanel.com/trends/

答案 2 :(得分:2)

我想建议您,首先按版本阻止您的代码。我的意思是对像IOS 7,IOS 6这样的弃用方法使用make块。然后尝试找出该版本支持的适当方法。但据我所知,你不能完全支持4.3版本。 正如@rckoenes所说80% is on iOS 7 the rest is on 6 and some are on 5. 4.3 is hardly used所以我也不支持6.0以下。祝你好运。