适应iOS7到iOS6的应用程序

 缘来是你-心定 发布于 2023-02-13 16:56

我在xcode 5.0中编写了我的iPhone应用程序,它只支持7个ios.

    我怎样才能将其用于ios 6?

    还有兴趣如何防止ipad上的应用程序加载?

wander.. 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中标记为可选; 要选择目标,请单击"常规",然后滚动到"链接的框架和库"部分.

可选框架http://f.cl.ly/items/3n261f2O3t361s0W0P2l/Schermafbeelding%202013-12-19%20om%2021.26.29.png

真正酷的是标记为可选的框架中的类被替换为nil没有它们的iOS版本.所以假设你使用Sprite Kit框架中的一个类来编写这样的代码,这是iOS 7中的新类:

SKSpriteNode *spriteNode = [SKSpriteNode spriteWithImageNamed:@"mySprite"];

在iOS 6上,当链接器"将框架链接到应用程序(应用程序不复制框架,它们只是从系统中获取它们)"时,SKSpriteNode在代码中看到,并且框架被标记为可选,该代码行将被这个取代:

... = [nil spriteWithImageNamed:@"mySprite"];

在Objective-C中将消息发送到nil绝对没有任何意义,因此上面的代码不会崩溃.没问题.因此,不要使用if-statements来检查类是否存在,而是将代码延迟,您可以使用流程并让动态链接器完成工作.

进一步阅读:

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

支持多个iOS版本和设备

第二个问题:没有办法说你希望你的应用只能在iPhone和iPod touch上运行.您可以要求iPhone和iPod touch特有的东西(如某个处理器架构或M7运动协处理器),但如果您需要M7芯片在您甚至不需要时排除某个设备,Apple将不会喜欢它它.你应该考虑为什么你不希望你的应用程序在iPad上运行.

1 个回答
  • 第一个问题:确保您的部署目标是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中标记为可选; 要选择目标,请单击"常规",然后滚动到"链接的框架和库"部分.

    可选框架http://f.cl.ly/items/3n261f2O3t361s0W0P2l/Schermafbeelding%202013-12-19%20om%2021.26.29.png

    真正酷的是标记为可选的框架中的类被替换为nil没有它们的iOS版本.所以假设你使用Sprite Kit框架中的一个类来编写这样的代码,这是iOS 7中的新类:

    SKSpriteNode *spriteNode = [SKSpriteNode spriteWithImageNamed:@"mySprite"];
    

    在iOS 6上,当链接器"将框架链接到应用程序(应用程序不复制框架,它们只是从系统中获取它们)"时,SKSpriteNode在代码中看到,并且框架被标记为可选,该代码行将被这个取代:

    ... = [nil spriteWithImageNamed:@"mySprite"];
    

    在Objective-C中将消息发送到nil绝对没有任何意义,因此上面的代码不会崩溃.没问题.因此,不要使用if-statements来检查类是否存在,而是将代码延迟,您可以使用流程并让动态链接器完成工作.

    进一步阅读:

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

    支持多个iOS版本和设备

    第二个问题:没有办法说你希望你的应用只能在iPhone和iPod touch上运行.您可以要求iPhone和iPod touch特有的东西(如某个处理器架构或M7运动协处理器),但如果您需要M7芯片在您甚至不需要时排除某个设备,Apple将不会喜欢它它.你应该考虑为什么你不希望你的应用程序在iPad上运行.

    2023-02-13 16:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有