In Cocoa do you prefer NSInteger or int, and why?
使用NS *类型比内置函数有什么好处? 你更偏向于哪个,为什么? 在32位/ 64位平台上, 我了解的方式是NSInteger等。是相应C类型的体系结构安全版本。基本上,它们的大小取决于体系结构,但是例如,可以保证NSInteger保留当前体系结构的任何有效指针。 Apple建议您将它们与OS X 10.5及更高版本一起使用,Apple的API:s将使用它们,因此,养成使用它们的习惯绝对是一个好主意。它们需要更多输入,但除此之外,似乎没有任何理由不使用它们。 64位运行时的量化问题
在某些情况下,可能有充分的理由使用标准类型而不是 显然,如果整数是8而不是4个字节,则值所占用的内存量将增加一倍。但是,由于并非每个值都是整数,因此通常不应期望应用程序的内存占用量增加一倍。但是,Mac OS X分配内存的方式取决于请求的内存量。
当前,如果您要求512字节或更少, 因此,在选择要使用的标量时,请确保选择明智的选择。有什么理由使您需要的值大于您的32位应用程序中需要的值?不太可能需要使用64位整数来计数秒数... 实际上,64位是NSInteger和NSUInteger的存在理由;在10.5之前,这些不存在。两者被简单地定义为64位long型和32位int型:
因此,当您想要"位本机"大小时,可以使用它们代替更基本的C类型。 CocoaDev有更多信息。 为了将数据导入或导出到文件或通过网络,我使用UInt32,SInt64等。 无论采用哪种体系结构,都保证它们具有一定的大小,并有助于将代码移植到也共享这些类型的其他平台和语言。 我更喜欢标准的c样式声明,但仅是因为我在几种语言之间切换并且我不必对此进行过多思考,但听起来我应该开始关注nsinteger |