请参考苹果文档链接:https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html
摘取几条如下:
1.指针不要转换为整数
将指针类型转换成整型的情况一般很少,但是非要用指针类型的话,请确保你的变量地址足够大。
在 32 位中,这段代码运行正常,是因为 int 类型和 指针类型大小相同。
在 64 位中指针类型是比int类型的大,所以这个赋值将会丢失指针类型的数据。
1
2
3
|
int *c = something passed in as an argument....
int *d = (int *)((int)c + 4); // Incorrect.
int *d = c + 1; // Correct!
|
2.数据类型保持一致
许多常见的程序错误都是应为数据类型用的不一致性导致的,尽管当你用了不 一样的数据类型的时候编译器给出了警告,如果你留意这些改变的话,它将会帮助你意识到这些问题。
方法调用的时候,方法接受的参数应该和调用的参数类型匹配。如果调用方法的参数比接收的方法的参数要大,这个值将会被截取。
1
2
3
|
NSInteger PerformCalculation(void);
int x = PerformCalculation(); // incorrect
NSInteger y = PerformCalculation(); // correct!
|
3.使用方法函数的原型调度Objective-C的消息
1
2
3
4
5
|
- (int) doSomething:(int) x { ... }
- (void) doSomethingElse {
int (*action)(id, SEL, int) = (int (*)(id, SEL, int)) objc_msgSend;
action(self, @selector(doSomething:), 0);
}
|
4.检查可变参数函数
如果你的方法使用了可变参数如fun(id self, SEL cmd, …)或者va_start, va_list, va_arg等宏,在iphone6真机测试此函数接收的参数是否正确。
5.isa指针不能直接访问
文章作者
梵梵爸
上次更新
2015-01-06
许可协议
原创文章,如需转载请注明文章作者和出处。谢谢