Objective-c,迭代空NSArray时的奇怪行为

mad*_*ulf 1 objective-c nsmutablearray nsarray

我不明白这段代码发生了什么:

sortedArray是NSMutableArray,为空,因此,sortedArray.count的值为0.

     for (NSUInteger i = 0 ; i < (sortedArray.count -1) ; i++) 
         NSLog(@"Apparently %d < %d  ( [sortedArray count] %d)", i, sortedArray.count-1, [sortedArray count] );
Run Code Online (Sandbox Code Playgroud)

因此,我们永远不应该进入循环,但我在日志中看到以下内容:

2014-01-21 12:11:16.433 AppName [445:60b]显然0 <-1([sortedArray count] 0)

有没有人知道什么可以触发问题?

Joh*_*pia 5

(sortedArray.count -1)
Run Code Online (Sandbox Code Playgroud)

是一个无符号整数0试图从自身中减去一个,所以你-1被解释为NSUIntegerMax