我们的iOS中有一个带有id属性的模型。这是我们目前正在使用的东西(顺便说一下,这是iOS 5)。
@property (nonatomic, assign) int userID;
到目前为止似乎工作正常。我想知道这是否会导致任何问题。
示例:我理解这意味着ID属性本身无法存储到plist中。但是,这是NSObject的属性。如果我们将任何东西存储到文件/核心数据/ nsuserdefaults /中它可能是整个对象而不仅仅是这个属性。
我想我的问题是......我们将这个存储为int而不是NSNumber会导致我们自己出现任何问题吗?
其次,将此存储为NSInteger会有什么不同。据我所知,它只是一个类型def,可以是long或int,具体取决于体系结构。因为我们只针对iPhone,所以它只是设置为int?在这种情况下似乎没有任何区别。
答案 0 :(得分:6)
我想我的问题是......我们会不会自己造成任何问题 将此存储为int而不是NSNumber存在问题?
这实际上取决于你要对这个值做些什么。如果你想把它当作一个对象(例如,你可以将它存储在NSArray或NSDictionary中),NSNumber可能很方便。如果您只是想跟踪价值,int
适合您,则可以使用int
。
其次,将此存储为NSInteger会有什么不同 代替。我知道它只是long或int的类型def 取决于架构。因为我们只针对iPhone做了 重要的是它只是设置为int?
我会选择NSInteger(和NSUInteger)。使用这些类型,您的代码将自动使用适合您正在编译的体系结构的大小。你可能只针对iOS,但你可能在iOS模拟器上运行你的代码,它运行在MacOS X上。所以这就是两个架构 - 你不知道将来iOS会发生什么。 / p>
答案 1 :(得分:0)
我能想到的唯一限制是,如果int = 0是有效值,或int没有值(null)是一个重要的用例。
由于整数始终用0初始化,因此您不会检查是否存在该属性。
在您的情况下,如果您想测试user_id是否存在,则无法使用原始数据类型(如int),因为它始终具有值。
在另一种情况下,0可能是一个有效的值(甚至在您的场景中 - 在许多流行文化参考中,史蒂夫乔布斯被戏称为Apple的员工编号0)。在这种情况下,int每次初始化为0可能是一个不必要的副作用,你将不得不处理。
答案 2 :(得分:-1)
在NSObject的子类中使用int
作为属性是很正常的。
根据您的平台,NSInteger
可能是int
或long
,但除此之外,使用int
或{{1}无关紧要只要值不超过NSInteger
的限制,就可以互换使用。