温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

iOS开发:在多平台、设备及64位架构上运行

发布时间:2020-06-05 20:02:48 来源:网络 阅读:1091 作者:sqkkzsh 栏目:移动开发

   最近在新工程上线是遇到很多适配的问题,尤其是旧工程64位设备的适配,现在整理一下。

Base SDK vs. Deplyment Target

1.配置Base SDK设置

   1)选择工程导航面板上的工程文件

   2)编辑面板上搜索base sdk

iOS开发:在多平台、设备及64位架构上运行

   Base SDK设置引导编译器使用该版本的SDK编译和构建应用,也就是说,它会直接控制应用使用哪些API。

2.Deplyment Target运行应用需要的最低操作系统版本

iOS开发:在多平台、设备及64位架构上运行

   支持多个SDK时的注意事项:

  1. 框架的可用性有时新的SDK会增加一个完整框架,较早的操作系统上该框架是不可用的如iOS5的Twitter.frame,只对iOS5以上的设备可用。同理还有,iOS6中的PassKit.frameworkiOS7中的GameController.Framework

  2. 类的可用性有时新SDK可能在已有框架中增加了新类。这意味着即使该框架链接了,也并不所有的符号都能在早期操作系统中可用。如iOS7里UIKit.framework中定义的NSLayoutManager类。检查控件是否可用:

    if ([NSLayoutManager class]) {
           //使用该类
       } else {
           //
       }


方法的可用性

  • 检查某个类是否存在某个方法:

    if ([self.view respondsToSelector:@selector(setTintColor:)]) {
        //设置tintColor
    }


  • 如果检量的方法是C全局函数

    if(CFunction != NULL) {
         CFunction(a);
     }


  • 检查框架、类和方法的可用性

  1.   开发者文档

  2.   iOS头文件中的宏

  • 检测设备及判断功能  
    正确的方法是,应该来检测硬件或传感器的可用性,而不是假设设备具有某些功能。

  • 检测硬件和传感器

    iOS6 PTL例子的源码:

    https://github.com/iosptl/ios6ptl/tree/master/ch26/UIDeviceAdditions

iPhone5和5s的支持

Auto Layout自动调整CAlayer以兼容iPhone5


-(void)viewWillLayoutSubviews {
    self.patternLayer.frame = self.view.bounds;
    [super viewWillLayoutSubviews];
}

iPhone 5s 和新的64位架构iPhone 5s支持一种新的指令:arm64。

64位模拟器要配置成x86_64的指令。

在“Build Setting”中将“Architectures”改成“Standard Architectures (including 64-bit)”

iOS开发:在多平台、设备及64位架构上运行

转换成iOS7注意的问题

  • Auto Layout

  • 支持 iOS6

  • Application Icon :iOS7 ICON尺寸不同

  • 无加粗线框的按钮

  • Tint Color:iOS7新添属性

  • Artwork Updates:iOS7支持更多艺术字

过渡到64位架构

第一步是用NSInteger、NSUInteger、CGFloat变为float、int。如果你编译一个应用,用NSInteger会用64位 integers(long) 代替 32位integers(int)。CGFloat同理。

比较常见的问题是,tableview行高返回值是flaot而非CGFloat,表格无法正常显示。


参考文档:

《iOS6 开发实战》

iOS 7: 如何为iPhone 5S编译64位应用

开发者文档:64-Bit Transition Guide


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI