NSUInteger を無効にして double にキャストすると、奇妙な動作が発生します。
NSUInteger test = 10;
NSLog(@"%d", test);
NSLog(@"%f", (double) test);
NSLog(@"%d", -test);
NSLog(@"%f", (double) -test);
出力は次のとおりです。
10
10.000000
-10
4294967286.000000
これが事実である理由はありますか?[NSArray count] から返されるものであるため、NSUInteger を使用しています。代わりに int を問題なく簡単に使用できますが、そうする理由について非常に興味があります。