我在xcode 5.0中编写了我的iPhone应用程序,它只支持7个ios。
答案 0 :(得分:5)
第一个问题:确保您的部署目标是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
替换。所以假设你使用Sprite Kit框架中的一个类来编写这样的代码,这是iOS 7中新增的:
SKSpriteNode *spriteNode = [SKSpriteNode spriteWithImageNamed:@"mySprite"];
在iOS 6上,当链接器将框架“链接”到应用程序(应用程序不复制框架,他们只是从系统中获取它们)时,在代码中看到SKSpriteNode
,框架被标记作为可选项,该代码行将被替换为:
... = [nil spriteWithImageNamed:@"mySprite"];
在Objective-C中向nil发送消息绝对没有任何意义,因此上面的代码不会崩溃。没问题。因此,不要使用if
延迟代码 - 检查类是否存在的语句,您可以使用流程并让动态链接器完成工作。
进一步阅读:
iOS 7 UI Transition Guide: Supporting iOS 6
Supporting Multiple iOS Versions and Devices
第二个问题:没有办法说你希望你的应用只能在iPhone和iPod touch上运行。您可以要求iPhone和iPod touch特有的东西(如某个处理器架构或M7运动协处理器),但如果您需要M7芯片在您甚至不需要时排除某个设备,Apple将不会喜欢它它。您应该考虑为什么不希望您的应用在iPad上运行。