Objective-C类中的简单属性

时间:2010-12-26 16:00:15

标签: objective-c class properties instance

我现在已经和Objective-C合作了一段时间了,到目前为止,我从来没有真正需要正确地创建自己的类。

我对两个参数感到困惑,你可以在头文件中给出@property(a, b)声明。在为Interface Builder创建出口时,我通常会@property(nonatomic, retain),但我不知道这意味着什么。

我正在写一个简单的类,它有一组属性,将从外部设置,如[instance setName:@"Bla Bla Bla"];或我想instance.name = @"Bla@",但我宁愿选择第一个选项。

我如何在课堂上声明这种属性?

先谢谢了! 对于n00bish问题很抱歉: - )

1 个答案:

答案 0 :(得分:1)

@property参数为您提供了属性行为的提示:

nonatomic告诉你设置/获取属性值不是原子的(wrt到多线程访问)

retain告诉您对象将被属性保留(即接收者将获得对象的所有权)。其他选项是“复制”(使用-copy复制对象。这通常是NSStrings等值对象的好选择)和“assign”(对象只是在不保留的情况下分配给属性。这通常是好的代表或数据源的选择)。这三个选项仅对ObjC对象有用,而不是简单的C类属性。

有关详细信息,请参阅http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProperties.html

对于您的情况,您可能会使用:

@property(copy) NSString* name;

或者:

@property(nonatomic, copy) NSString* name;

如果你不需要属性setter / getter是原子的。