http://blog.sina.com.cn/s/blog_7b9d64af0101jpvi.html
Cast from pointer to smaller type 'int' loses information
不经意之间,我的程序从XCode 4.6升级到XCode 5.0后,打开原来的iOS程序,出现了以上的错误!
你需要知道
在iOS编程中,经常会使用C或者C++混编的情况。
在C和C++编程中,经常将指针转化为int类型。
因为在32位的系统中,指针占有4个字节(当然有2个字节的指针,别钻牛角)的空间;int也占有4个字节的空间。这样,转化是没有精度损耗的。OK。
错误原因
当在Xcode 5中编译时,由于编译项:
对的,因为Xcode 支持64位系统。那么,指针在64位操作系统下占有8个字节的空间,而int占有4个字节的空间;这时候,就出问题了,将8字节的指针转化位4个字节的int,当然会发生精度的损耗。
解决方法
1.更改Xcode的编译项Architectures。
2.将8字节的指针强制转化为8个字节的long 类型。