美文网首页
iphone5引发的bug

iphone5引发的bug

作者: 白天才痴 | 来源:发表于2016-08-02 00:23 被阅读113次

最近项目里有一个功能被曝说在iphone5上失效,追查后的原因是一个id值在iphone5存储到NSNumber时数据溢出导致的。开始时rd告诉我说是由于iphone5上的cpu架构是32位的,而从iphone5s开始cpu架构是64位的,代码里用的int也是不同size导致。
虽然我没写过oc的代码,但是我知道在c++里int的size是固定的4bytes,而long才是可变的。最终跟了一下代码,原来代码里用了NSInteger这个包裹类,而其定义为:

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif 

从定义可以看到,其定义是跟CPU总线位数相关的,而long得size是32位系统下为4bytes,64位系统下为8bytes。
从官方doc可以见到。
Table 1-1 Size and alignment of integer data types in OS X and iOS

Integer data type ILP32 size ILP32 alignment LP64 size LP64 alignment
char 1 byte 1 byte 1 byte 1 byte
BOOL, bool 1 byte 1 byte 1 byte 1 byte
short 2 bytes 2 bytes 2 bytes 2 bytes
int 4 bytes 4 bytes 4 bytes 4 bytes
long 4 bytes 4 bytes 8 bytes 8 bytes
long long 8 bytes 4 bytes 8 bytes 8 bytes

相关文章

  • iphone5引发的bug

    最近项目里有一个功能被曝说在iphone5上失效,追查后的原因是一个id值在iphone5存储到NSNumber时...

  • iOS Bug

    Refresh Bug : Bug: 添加完数据后一次刷新table,引发多次footRefresh for ba...

  • iOS屏幕分辨率判断

    判断 iPhone5的 define iPhone5 ([UIScreen instancesRespondToS...

  • Mac开发之一个Bug引发的三个思考

    既然是一个Bug引发的思考,自然要先上Bug,如上动图所示,在输入了空格标题之后,引发一个问题,就是光标依然在文本...

  • iOSBundle打包UIRequiredDeviceCapab

    今天测试给我反馈了一个bug,在iOS10的iPhone5手机出现了白屏的现象,先说下我们的项目结构。我们的项目是...

  • 处理历史数据脚本导致问题的反思

    为了警醒自己好好开发程序,我去网上冲浪了Bug一番,看到各位同僚们饱经Bug之苦纠缠,也看到“Bug 引发的 18...

  • Git提交引发的Bug

    1. 切换分支时,频繁提示更新“UserInterfaceState.xcuserstate”文件? 在创建了"....

  • JavaScript中this引发的bug

    在JavaScript中有一个很特别、很常用又常常让初学者很困扰的东西 ─ “this”,在这堂课中会来谈谈这个”...

  • 《bug引发的思考-----layoutIfNeeded》

    由来:tableView滚定到某一组的某一行的时候会出现遮挡.也就是多滚动了一点。 楼主的做法是: // 无遮挡的...

  • Mat通道引发的bug

    群里有个新人, 说以下代码报错, 越界了, 看不出来咋回事,我们来试试报错的代码如下: F5运行后的报错日志 第2...

网友评论

      本文标题:iphone5引发的bug

      本文链接:https://www.haomeiwen.com/subject/gvrfsttx.html