最近在新工程上线是遇到很多适配的问题,尤其是旧工程64位设备的适配,现在整理一下。
创新互联专注于网站建设|网站建设维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖iso认证等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身开发品质网站。1.配置Base SDK设置
1)选择工程导航面板上的工程文件
2)编辑面板上搜索base sdk
Base SDK设置引导编译器使用该版本的SDK编译和构建应用,也就是说,它会直接控制应用使用哪些API。
2.Deplyment Target运行应用需要的最低操作系统版本
支持多个SDK时的注意事项:
框架的可用性有时新的SDK会增加一个完整框架,较早的操作系统上该框架是不可用的如iOS5的Twitter.frame,只对iOS5以上的设备可用。同理还有,iOS6中的PassKit.frameworkiOS7中的GameController.Framework
类的可用性有时新SDK可能在已有框架中增加了新类。这意味着即使该框架链接了,也并不所有的符号都能在早期操作系统中可用。如iOS7里UIKit.framework中定义的NSLayoutManager类。检查控件是否可用:
if ([NSLayoutManager class]) { //使用该类 } else { // }
方法的可用性
检查某个类是否存在某个方法:
if ([self.view respondsToSelector:@selector(setTintColor:)]) { //设置tintColor }
如果检量的方法是C全局函数
if(CFunction != NULL) { CFunction(a); }
检查框架、类和方法的可用性
开发者文档
iOS头文件中的宏
检测设备及判断功能
正确的方法是,应该来检测硬件或传感器的可用性,而不是假设设备具有某些功能。
检测硬件和传感器
iOS6 PTL例子的源码:
https://github.com/iosptl/ios6ptl/tree/master/ch26/UIDeviceAdditions
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)”
转换成iOS7注意的问题
Auto Layout
支持 iOS6
Application Icon :iOS7 ICON尺寸不同
无加粗线框的按钮
Tint Color:iOS7新添属性
Artwork Updates:iOS7支持更多艺术字
第一步是用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
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。