标签:
64位下,基本类型long从占用4字节变为占用8字节。要注意看一下程序中出现sizeof函数的地方,并注意尽量不要使用基本数据类型,改用对象类型:
NSArray *items = @[<a href="http://www.jobbole.com/members/1/" rel="nofollow">@1</a>, @2, @3];
for (int i = -1; i < items.count; i++) {
NSLog(@"%d", i);
}
数组.count返回值类型是NSUInteger,但这里与i比较时,若i为-1,-1会被隐式转换为很大的正整数,导致计算出错。一定要注意和这个变量相关的所有操作(赋值、比较、转换)
这里将基本数据类型改为NSUInteger,初始值从0开始即可。此处只为举例,遍历还是用for-in或block更方便。
typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
UIViewAnimationCurveEaseInOut,
UIViewAnimationCurveEaseIn,
UIViewAnimationCurveEaseOut,
UIViewAnimationCurveLinear
};
1) unsigned long类型转为NSNumber:
(unsigned long)items.count 改为NSNumber的@语法糖: @(items.count).
2) int类型转string:
NSInteger i = 10086; NSString *string = @(i).stringValue;
32-bit下,BOOL被定义为signed char,@encode(BOOL)的结果是‘c‘
64-bit下,BOOL被定义为bool,@encode(BOOL)结果是‘B‘
编译器已经默认禁用了这种使用,isa指针在32位下是Class的地址,但在64位下利用bits mask才能取出来真正的地址,若真需要,使用runtime的object_getClass 和object_setClass方法。
把target加上arm64编译,静态库(.a)或者framework,就需要重新找支持64-bit的包.
会。
最后列一下官方文档中的注意点:
int32_t, int64_t这种定长类型参考文章:
http://ios.jobbole.com/81561/
标签:
原文地址:http://www.cnblogs.com/xuxin/p/4270811.html