關于app支持64bit解決方案

關于iOS應用,其實蘋果很早就就發(fā)布消息:2015年的2月開始,提交App Store的應用必須支持64-bit。而Apple在iPhone 5s 就已經搭配64位雙核蘋果A7處理器。還是在15年6月,蘋果App Store中所有應用更新都必須支持64bit。

但這對于企業(yè)級應用來說,并不能限制應用去支持64bit,因為企業(yè)級應用不必提交App Store審核。但Apple又有了新的對策:在iOS 10.1測試版中加入了一項提示,如果用戶下載的是一個32位應用,系統(tǒng)會提示“XXX”可能使iPhone變慢,應用開發(fā)者需要更新此應用以改進其兼容性。

提示效果圖

現在看來Apple這種方式,可算是最有效的方式了,因為這樣會直接導致用戶對一個應用的不同態(tài)度。甚至是不止降低用戶量。如果是企業(yè)級用戶,可以直接引起用戶的強烈不滿。

不管怎么說,作為一個iOS開發(fā)者,既然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的環(huán)境下)。
  • 重寫匯編代碼,讓你的代碼使用新的64-bit操作碼和運行時。
  • 不要在可變參數方法和不可變參數方法之前進行強制轉化。

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

關于iOS應用支持64位的一些詳情,可以看看這篇不錯的文章:
iOS應用如何實現64位的支持

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容