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