我现在已经和Objective-C合作了一段时间了,到目前为止,我从来没有真正需要正确地创建自己的类。
我对两个参数感到困惑,你可以在头文件中给出@property(a, b)
声明。在为Interface Builder创建出口时,我通常会@property(nonatomic, retain)
,但我不知道这意味着什么。
我正在写一个简单的类,它有一组属性,将从外部设置,如[instance setName:@"Bla Bla Bla"];
或我想instance.name = @"Bla@"
,但我宁愿选择第一个选项。
我如何在课堂上声明这种属性?
先谢谢了! 对于n00bish问题很抱歉: - )
答案 0 :(得分:1)
@property参数为您提供了属性行为的提示:
nonatomic告诉你设置/获取属性值不是原子的(wrt到多线程访问)
retain告诉您对象将被属性保留(即接收者将获得对象的所有权)。其他选项是“复制”(使用-copy复制对象。这通常是NSStrings等值对象的好选择)和“assign”(对象只是在不保留的情况下分配给属性。这通常是好的代表或数据源的选择)。这三个选项仅对ObjC对象有用,而不是简单的C类属性。
对于您的情况,您可能会使用:
@property(copy) NSString* name;
或者:
@property(nonatomic, copy) NSString* name;
如果你不需要属性setter / getter是原子的。