Objective c 在类属性中使用int是否存在问题?

Objective c 在类属性中使用int是否存在问题?,objective-c,class,Objective C,Class,当我开始使用Cocoa时,我记得我在某个地方读到,int/float和类似值不应该用于类属性,也不应该使用NS*等价物(比如NSInteger) 这里有一个真正隐藏的问题吗?为什么会更好呢?或者这只是一个由我读过的人自愿制定的编码规则(我一生都找不到它在哪里) 那么,什么更好呢 @interface xx... int myProp; @end 或 int版本可以,但NSInteger是首选。NSInteger不是一个对象,也不必用指针引用——它只是一个typedef,允许变量在32

当我开始使用Cocoa时,我记得我在某个地方读到,int/float和类似值不应该用于类属性,也不应该使用NS*等价物(比如NSInteger)

这里有一个真正隐藏的问题吗?为什么会更好呢?或者这只是一个由我读过的人自愿制定的编码规则(我一生都找不到它在哪里)

那么,什么更好呢

@interface xx... 
    int myProp;
@end


int版本可以,但NSInteger是首选。NSInteger不是一个对象,也不必用指针引用——它只是一个typedef,允许变量在32位和64位计算机上都是本机字大小。因此,最好的选择是:

@interface SomeClass : NSObject {
    NSInteger aNumber;
@end

@implementation SomeClass
- (id)init {
    [super init];
    number = 42;
}
@end

看这个。NSInteger是架构安全的,从10.5版开始推荐。

好问题Aleksandar。前面的StackOverflow问题/答案可能正是您想要的:只是为了让Chuck在下面的观点更加明确:您的int示例的NSInteger版本是“NSInteger myProp”,而不是“NSInteger*myProp”。哎哟,谢谢smorgan。我有点习惯在以NS O开头的任何东西后面加上*),所以它基本上是一种防止通过int大小的安全防护?如果我确信int是一个小的最大值(比如1000),那么使用int也没什么错。它并不能防止任何事情发生。它只是帮助你的应用程序架构独立。通常没有充分的理由在NSInteger上使用int-你不会得到任何东西。如果您希望指定一个较小的数字,从而节省空间,则应使用较小的类型,如uint_16或uint_8。谢谢,非常感谢。
@interface SomeClass : NSObject {
    NSInteger aNumber;
@end

@implementation SomeClass
- (id)init {
    [super init];
    number = 42;
}
@end