iOS工程师面试深入浅出(Objective-C)- NSInterger 与 Int 有什么不一样?
事实上在我平常的时候就是看编译器需要什么Type,就给他什么Type。根本没有仔细去暸解 NSInterger与 Int的差异,在面试时被问到时还真的顿时不知道怎么回答。我当时的回答是 NSInterger 是 Objective-C 封装的物件 (误)。
首先:
在c语言中,int和long的字节数是和操作系统指针所佔的数值类型;
但c语言中说,long的长度永远大于或等于int;
Objective-c里,苹果的官方文档中总是推荐用NSInteger;
区别:
原来在苹果的api实现中,NSInteger是一个封装,它会识别当前操作系统的数值,自动返回最大的类型。
总结:
NSInteger与int的区别是NSInteger会根据系统的数值(32或64)自动选择int的最大数值(int或long)还有就是他和NSString一样都可以是物件。