ios8适配遇到的问题及解决方法
2015-08-19 16:32
148 查看
Xcode6,Bulid Setting中的Base SDK选择ios8.0
1.程序中经常用到的,viewWillAppear之类的函数,要调用其super方法,之前不写没问题没警告,8.0中有警告。
2.[UIScreen mainScreen].bounds的值在ios8中是随横竖屏改变的,例如:
Iphone5竖屏的bounds为(0,0,320,568),在横屏时则为(0,0,568,320);
界面问题大都是这个问题导致的。
3.UILabel的对齐方式,如果之前的是使用UITextAlignment枚举的,其实这个在ios6之后就废弃了,改为使用NSTextAlignment枚举,之前版本没有改,适配ios8时改的。
4.arm64适配:
arm64适配首先要在工程的Bulid Setting中设置指令集,如下
1.) Architectures为Standard architectures(armv7,arm64)
2.)ValidArchitectures中添加arm64
arm64数据类型字节变化如下(常用的):
做数据类型的转换,拿NSInteger和int之间的转换为例,其他可以使同样方法转换。例:
NSInteger a = 5;
int b = a; 64-bit中这样是错误的
int c = [@(a) intValue]; 这样就正确了,用NSNumber类型来转化
NSLog(@”a 的值为 %d”,a); 同样的道理,64-bit中错误,可以写为
NSLog(@”a 的值为 %@”,@(a));
当然也可以使用强制转化,intd = (int)a; 个人不喜欢这种转化
3.)写代码时时常用到数组,64-bit中数组的count类型为NSUInteger类型,故直接赋值给int型也是不正确的,需要做转化,转化方式,我用了上面同样的方法。
4.)假如现在有一不为空数组array,for循环遍历
for(int i = -1; i < array.count; i ++)
{
NSLog(@”%d”,i);
}
这样结果for循环一次没进,数组的count是NSUInteger类型,-1与其比较时隐士转换成NSUInteger,变成了一个很大的数字,需要小心处理此类问题。
牵扯到的库不支持arm64的,要更新成最新的。
以上仅个人观点。
1.程序中经常用到的,viewWillAppear之类的函数,要调用其super方法,之前不写没问题没警告,8.0中有警告。
2.[UIScreen mainScreen].bounds的值在ios8中是随横竖屏改变的,例如:
Iphone5竖屏的bounds为(0,0,320,568),在横屏时则为(0,0,568,320);
界面问题大都是这个问题导致的。
3.UILabel的对齐方式,如果之前的是使用UITextAlignment枚举的,其实这个在ios6之后就废弃了,改为使用NSTextAlignment枚举,之前版本没有改,适配ios8时改的。
4.arm64适配:
arm64适配首先要在工程的Bulid Setting中设置指令集,如下
1.) Architectures为Standard architectures(armv7,arm64)
2.)ValidArchitectures中添加arm64
arm64数据类型字节变化如下(常用的):
数据类型 | 32-bit size | 64-bit size |
char | 1 byte | 1 byte |
BOOL,bool | 1 byte | 1 byte |
short | 2 byte | 2 byte |
int | 4 byte | 4 byte |
long | 4 byte | 8 byte |
long long | 8 byte | 8 byte |
float | 4 byte | 4 byte |
double | 8 byte | 8 byte |
CGFloat | 4 byte | 8 byte |
size_t | 4 byte | 8 byte |
time_t | 4 byte | 8 byte |
NSInteger | 4 byte | 8 byte |
NSInteger a = 5;
int b = a; 64-bit中这样是错误的
int c = [@(a) intValue]; 这样就正确了,用NSNumber类型来转化
NSLog(@”a 的值为 %d”,a); 同样的道理,64-bit中错误,可以写为
NSLog(@”a 的值为 %@”,@(a));
当然也可以使用强制转化,intd = (int)a; 个人不喜欢这种转化
3.)写代码时时常用到数组,64-bit中数组的count类型为NSUInteger类型,故直接赋值给int型也是不正确的,需要做转化,转化方式,我用了上面同样的方法。
4.)假如现在有一不为空数组array,for循环遍历
for(int i = -1; i < array.count; i ++)
{
NSLog(@”%d”,i);
}
这样结果for循环一次没进,数组的count是NSUInteger类型,-1与其比较时隐士转换成NSUInteger,变成了一个很大的数字,需要小心处理此类问题。
牵扯到的库不支持arm64的,要更新成最新的。
以上仅个人观点。
相关文章推荐
- iOS中级(一) 正则表达式
- iOS项目开发实战——使用用户首选项数据API存储信息
- ios上获取是否安装了某个程序
- IOS AutoLayout 好的建议搜集
- LLDB, iOS调试器
- iOS沙盒路径
- iOS中视图控制器View的加载与生命周期
- iOS安装svn
- Quartz2d从易到难全解析---绘制封闭三角形,四边形
- iOS5可能会删除本地文件储存 - Caches 也不安全
- ios 对齐属性
- iOS开发学习之iOS程序启动过程
- iOS @IBDesignable和@IBInspectable
- iOS打包静态库
- ios7适配一些问题以及64位32位
- IOS:代理delegate为什么要用assign或者weak
- ios 字体加斜和下划线
- IOS navigationItem 设置返回按钮,title图片和rightBarButtonItem
- ios中webview与js交互代码
- iOS中条件语句的优化