標籤:相容 ios 64bit achitecture ios7
最近在新工程上線是遇到很多適配的問題,尤其是舊工程64位裝置的適配,現在整理一下。
Base SDK vs. Deplyment Target
1.配置Base SDK設定
1)選擇工程導航面板上的工程檔案
2)編輯面板上搜尋base sdk
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/27/47/wKiom1Nxn2uSUkobAABEc-GNbzE945.jpg" title="base SDK.png" alt="wKiom1Nxn2uSUkobAABEc-GNbzE945.jpg" />
Base SDK設定引導編譯器使用該版本的SDK編譯和構建應用,也就是說,它會直接控制應用使用哪些API。
2.Deplyment Target運行應用需要的最低作業系統版本
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/27/47/wKiom1Nxn4DwPSDjAAAtytrqB3E411.jpg" title="deployment target.png" alt="wKiom1Nxn4DwPSDjAAAtytrqB3E411.jpg" />
支援多個SDK時的注意事項:
架構的可用性有時新的SDK會增加一個完整架構,較早的作業系統上該架構是停用如iOS5的Twitter.frame,只對iOS5以上的裝置可用。同理還有,iOS6中的PassKit.frameworkiOS7中的GameController.Framework
類的可用性有時新SDK可能在已有架構中增加了新類。這意味著即使該架構連結了,也並不所有的符號都能在早期作業系統中可用。如iOS7裡UIKit.framework中定義的NSLayoutManager類。檢查控制項是否可用:
if ([NSLayoutManager class]) { //使用該類 } else { // }
方法的可用性
開發人員文檔
iOS標頭檔中的宏
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)”
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/27/6D/wKioL1Ny7XOQT0gNAADN3-Esk78345.jpg" title="architecture.png" alt="wKioL1Ny7XOQT0gNAADN3-Esk78345.jpg" />
轉換成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
本文出自 “現實的理想主義者” 部落格,請務必保留此出處http://sookie.blog.51cto.com/5955569/1410391