繁体   English   中英

将应用程序从iOS7适配到iOS6

[英]Adapt app from iOS7 to iOS6

我用xcode 5.0编写了iPhone应用程序,它仅支持7个ios。

  1. 如何使它可用于ios 6?
  2. 还对如何防止ipad上的应用程序加载感兴趣?

第一个问题:确保您的部署目标是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存在来挥霍代码。

进一步阅读:

iOS 7 UI过渡指南:支持iOS 6

支持多种iOS版本和设备

第二个问题:不能说您希望您的应用仅在iPhone和iPod touch上运行。 您可能需要特定于iPhone和iPod touch的功能(例如某些处理器体系结构或M7运动协处理器),但是如果您需要M7芯片甚至不需要时就排除某些设备,Apple不会喜欢它。它。 您可能应该考虑为什么不希望您的应用程序在iPad上运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM