在为iOS开发时,什么时候应该使用NSInteger vs.int?我在Apple示例代码中看到,当将值作为参数传递给函数或从函数返回值时,他们使用NSInteger(或NSUInteger).

- (NSInteger)someFunc;...
- (void)someFuncWithInt:(NSInteger)value;...

但在一个函数中,他们只是用int来跟踪一个值

for (int i; i < something; i++)
...

int something;
something += somethingElseThatsAnInt;
...

我读到(有人告诉我)在64位或32位环境中,NSInteger是引用整数的安全方法,那么为什么要使用int呢?

推荐答案

当你不知道你的代码可能运行在什么样的处理器架构上时,你通常想要使用NSInteger,因此出于某种原因,你可能想要最大的整数类型,在32位系统上它只是int,而在64位系统上它是long.

除非您特别要求,否则我会坚持使用NSInteger,而不是int/long.

NSInteger/NSUInteger被定义为*dynamic typedef*s,它们的定义如下:

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif

关于应该为这些类型中的每种类型使用的正确格式说明符,请参阅String Programming Guide's section on Platform Dependencies

Ios相关问答推荐

StackView UIKit间距似乎非常小的编程式编程

如何仅在TextField中的文本发生更改时才执行代码?

如何在SwiftUI ScrollView中zoom 中心项目?

DriverKit驱动程序中可能存在IOBufferMemoyDescriptor泄漏

分配给指针会通过 class_addMethod 导致 EXC_BAD_ACCESS

WatchConnectivity - 从手表配套应用程序在 iOS 设备上启动 AVPlayer

当任何 TextEditor 有多于一行时,所有 TextEditor 都会调整大小

查找东南亚语言(泰语、高棉语、老挝语、缅甸语)中的单词边界

iOS 16 中的状态栏 colored颜色

UIView 倒置旋转时的zoom 问题

VStack 显示错误实例方法 'sheet(item:onDismiss:content:)' 要求 'Int' 符合 'Identifiable'

如何将单个按钮传递到自定义 ConfirmationDialog

ios 崩溃 EXC_BAD_ACCESS KERN_INVALID_ADDRESS

检测 iOS UIDevice 方向

UIButton 事件.有什么不同?

核心数据 - 无法在路径加载优化模型

使用 Xcode 4 的 iPhone 临时构建

自动布局:是什么创建了名为 UIView-Encapsulated-Layout-Width & Height 的约束?

AFNetworking 2.0 向 GET 请求添加标头

检测应用程序何时进入我的视图背景的最佳方法是什么?