美文网首页
关于app支持64bit解决方案

关于app支持64bit解决方案

作者: WheatDen | 来源:发表于2017-08-22 23:51 被阅读67次

    关于iOS应用,其实苹果很早就就发布消息:2015年的2月开始,提交App Store的应用必须支持64-bit。而Apple在iPhone 5s 就已经搭配64位双核苹果A7处理器。还是在15年6月,苹果App Store中所有应用更新都必须支持64bit。

    但这对于企业级应用来说,并不能限制应用去支持64bit,因为企业级应用不必提交App Store审核。但Apple又有了新的对策:在iOS 10.1测试版中加入了一项提示,如果用户下载的是一个32位应用,系统会提示“XXX”可能使iPhone变慢,应用开发者需要更新此应用以改进其兼容性。

    提示效果图

    现在看来Apple这种方式,可算是最有效的方式了,因为这样会直接导致用户对一个应用的不同态度。甚至是不止降低用户量。如果是企业级用户,可以直接引起用户的强烈不满。

    不管怎么说,作为一个iOS开发者,既然Apple已经提出,还是要去支持64-bit。

    具体做法:


    方法如图

    关于Xcode “Build Setting”中的Architectures参数问题:

    • Architectures:你想支持的指令集。(支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,造成最终编译的包很大。)

    • Valid architectures:即将编译的指令集。(Valid architecturesArchitecture两个集合的交集为最终编译生成的版本)

    • Build Active Architecture Only:是否只编译当前设备适用的指令集(如果这个参数设为YES,使用iPhone 6调试,那么最终生成的一个支持ARM64指令集的Binary。一般在DEBUG模式下设为YES,RELEASE设为NO)

    对于支持64-bit,我们可以设置ArchitecturesStandard architectures,它包括 armv7、armv7s 和 arm64

    而是对于代码中的改变其实也就分为:数据类型和方法调用 两个部分。

    比如:int -> NSInteger

    以及得到数组个数的方法:[dataArray count] -> dataArray.count

    这是关于数据类型改变的总结:


    64bit-Summary

    上图所说:

    • 避免将长整型long赋值给整型int (64-bit上会导致数据丢失)
    • 避免将指针类型pointer赋值给整型int (64-bit导致地址数据丢失)。
    • 留意数值计算,避免指针和长整型在运算上的截断问题(掩码计算,无符号整数和有符号整数同时使用等)。
    • 留意对齐方法带来的变化。
    • 32-bit到64-bit之间数据转化(通过网络传递的用户数据,可能同时存在于32-bit和64-bit的环境下)。
    • 重写汇编代码,让你的代码使用新的64-bit操作码和运行时。
    • 不要在可变参数方法和不可变参数方法之前进行强制转化。

    具体可以看:《64-Bit Transition Guide for Cocoa Touch

    关于iOS应用支持64位的一些详情,可以看看这篇不错的文章:
    iOS应用如何实现64位的支持

    相关文章

      网友评论

          本文标题:关于app支持64bit解决方案

          本文链接:https://www.haomeiwen.com/subject/xbmrdxtx.html