@property objective-c语法

时间:2010-05-24 18:42:51

标签: objective-c properties

我正在寻找getter / setter的语法。哪个是setter,哪个是getter ??

readwrite属性是否是getter?
分配是设定者吗?

@interface SomeClass : NSObject
{
  NSString *str;
  NSDate *date;
} 

@property (readwrite, assign) NSString *str;
@property (readwrite, assign) NSDate *date;

4 个答案:

答案 0 :(得分:6)

吸气剂或安装者都不是。 readwrite控制是生成set方法还是仅生成getter,assign指定内存管理方案(在这种情况下,不保留变量,这可能是一个错误)。

有关完整的属性声明语法,您可以查看the relevant docs

答案 1 :(得分:2)

你应该看看this page,它会解释一些事情。

readwrite =该属性可以读写

assign =这是一个不需要重新计算的属性。 (替代方法是“保留”,这意味着此属性的值在设置时为retain,在覆盖时为release d。

答案 2 :(得分:2)

都不是。您发布的代码是一个接口声明; getter和setter进入@implementation上下文,通常使用@synthesize指令创建,如

 @synthesize str;
 @synthesize date;

属性声明后可以有许多属性。在这种情况下,readwrite指定可以设置属性的值(使用someObject.str = @"foo"语法);相反的是readonly,这意味着无法设置属性的值。 assign - 与copyretain相对 - 表示属性的值直接设置,而后两者分别创建值的副本并保留值。

答案 3 :(得分:2)

getter和setter是使用@property时自动创建的两种方法。默认情况下,getter将与属性具有相同的名称,setter的名称前缀为set,后缀为:;例如,对于属性str,您可以调用[someobj str]来获取str属性和[someobj setStr: somestr]

readwriteassign属性提供了有关如何定义此getter和setter的一些信息,如果您使用@synthesize为您创建定义。 readwrite只是说您可以设置属性,assign说明如何设置属性。有关详细信息,请参阅the documentation