int vs NSNumber vs NSInteger

Mos*_*she 26 iphone objective-c ios

我有一行代码将根据数据类型"day"和"1"的不同而有所不同.我相信它是以下,虽然我稍后会检查我的源代码.

day = day + 1;

这有意义吗?差异会是什么?

Tho*_*ing 49

NSInteger是一个描述整数的类型定义 - 但它不等同int于64位平台.
您可以通过NSInteger在Xcode中单击cmd来检查typedef .
NSInteger定义为int构建32位应用程序和long64位应用程序时.
大多数情况下,您可以使用NSInteger替换int,但在执行此操作时需要考虑一些事项.
Apple的64位Cocoa过渡指南提供了一些相关信息.

NSNumber是一个可以帮助您将数字类型存储为对象的类.它具有在不同类型和方法之间进行转换的方法,以检索数值的字符串表示形式.
如果您在示例中使用day类型变量NSNumber*,则不会修改day其内存地址的值.

如果您正在处理时间值,您还可以查看NSDate.


Xar*_*mer 10

NSInteger是一个简单的整数,NSNumber是一个对象,其中as int是一个原始数据类型.

NSInteger只不过是一个长整数的同义词.

如果您需要在某处存储号码,请使用NSNumber.如果您正在进行计算,循环等,请使用NSInteger,NSUInteger或int.

您可以使用以下命令将NSInteger包装到NSNumber中:

NSNumber *NumberToStore = @(21);
Run Code Online (Sandbox Code Playgroud)

并使用以下方式恢复

NSInteger retrievingInteger = [NumberToStore integerValue];
Run Code Online (Sandbox Code Playgroud)