NSUInteger和NSInteger和int

int和NSInteger其实是差不多的,但更推荐使用NSInteger,因为使用NSInteger,这样就不用考虑设备是32位还是64位了。

NSUInteger是无符号的,即没有负数,NSInteger是有符号的,所以NSUInteger类型不能给它赋负值。比如以下这段代码,a=-1的时候,是能进入循环的。

NSUInteger a = -1; 
for(int i=0;i<a;i++){    
    NSLog(@"%d,%lu",i,(unsigned long)a);
    break;
}
输出:0,18446744073709551615
这时a的值其实等于18446744073709551615

还有NSUInteger和NSInteger和int都是基础类型,是不能放入NSArray中的,需要转换成NSNumber,应为NSNumber是类,NSArray中只能放入类。
用以下NSNumber的类方法转即可

  • (NSNumber *) numberWithChar: (char) value;
  • (NSNumber *) numberWithInt: (int) value;
  • (NSNumber *) numberWithFloat: (float) value;
  • (NSNumber *) numberWithBool: (BOOL) value;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容