有谁有专业知识来解释何时使用NSInteger和何时使用NSInteger
我见过Cocoa方法返回NSInteger,即使在返回值总是无符号的情况下也是如此
根本原因是什么?如果我们要表示负值,NSInteger或int是否严格限制为
从NSObjCRuntime.h:
#if uu LP64 uu124; | |(TARGET OS |嵌入式&;!TARGET OS IPHONE)| | TARGET OS | uWin32 | NS | ubuild LIKE 64
typedef长NSInteger;
typedef无符号长整数;
#否则
typedef int NSInteger;
typedef无符号整数;
#恩迪夫
在处理NSInteger与NSInteger时,您还应了解整数转换规则:
例如,下面的片段返回0(false),尽管您希望它打印1(true):
NSInteger si=-1;
整数ui=1;
printf(“d\n”,si<;ui);
原因是[si]变量被隐式转换为无符号整数
有关这些“问题”以及如何解决这些问题的深入讨论,请参见CERT的安全编码网站