今天在做页面的时候,有一个页面很奇怪,一加载UI就卡死。很奇怪而且居然找不到问题在哪。普通死循环的话,Xcode会自动定位到死循环的地方,但这次并没有。
一开始我不知道是什么问题,于是乎我一通找,断点、注释代码,最终也没找到。突然发现内存在慢慢的涨。于是我用Leaks查看了一下,最终发现了罪魁祸首。
罪魁祸首问题就出在这个for循环上,看到这里我立刻想到,之前有一个数组.count-1
导致死循环的问题,肯定就是这个问题了,由于数组.count
和字符串.length
这类长度的单位是无符号整型也就是NSUInteger
,在for循环上使用的话,如果遇到数组.count
为0,0-1
的值结果并不会为-1
,而是会变成一个无比大的数,因为NSUInteger
是无符号的。所以遇到for循环的话还是要注意一下这些无符号整型的,不然可能出现死循环的严重的后果。
最后再上一个NSInteger
和NSUInteger
的对比图。
网友评论