[英]Adapt app from iOS7 to iOS6
我用xcode 5.0编写了iPhone应用程序,它仅支持7个ios。
第一个问题:确保您的部署目标是6.0,请勿使用仅适用于iOS 7的API,或者使用
if ([someObject respondsToSelector:@selector(ios7onlymethod)] {
// do your iOS 7 only stuff
} else {
// Fall back to iOS 6-supported ways
}
或使用
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f) {
// do your iOS 7 only stuff
} else {
// Fall back to iOS 6-supported ways
}
您要使用的新框架应在Xcode中标记为可选; 为此,请选择目标,单击常规,然后滚动到“链接的框架和库”部分。
真正很酷的是,在没有它们的iOS版本上,标记为可选的框架中的类被替换为nil
。 因此,假设您使用iOS 7中新增的Sprite Kit框架中的类编写了如下代码:
SKSpriteNode *spriteNode = [SKSpriteNode spriteWithImageNamed:@"mySprite"];
在iOS 6上,当链接程序将框架“链接”到应用程序(应用程序不复制框架,它们只是从系统获取框架)时, SKSpriteNode
在您的代码中看到SKSpriteNode
,并且该框架被标记为可选,该行代码将被替换为:
... = [nil spriteWithImageNamed:@"mySprite"];
在Objective-C中将消息发送到nil绝对没有任何作用,因此上面的代码不会崩溃。 没问题。 因此,您可以使用流程并让动态链接器完成工作,而不是通过if
-statements检查代码if
存在来挥霍代码。
进一步阅读:
第二个问题:不能说您希望您的应用仅在iPhone和iPod touch上运行。 您可能需要特定于iPhone和iPod touch的功能(例如某些处理器体系结构或M7运动协处理器),但是如果您需要M7芯片甚至不需要时就排除某些设备,Apple不会喜欢它。它。 您可能应该考虑为什么不希望您的应用程序在iPad上运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.