自定义访问器和属性中的“=”?

时间:2011-09-05 15:57:05

标签: objective-c accessor

您能告诉我这些自定义访问者的含义:

为什么要在setter旁边添加此信息:

@property (assign,getter=isSelected) BOOL selected;

关于二传手,

@property (copy,setter=setDefaultTitle:) NSString* title;

这与编写@synthesize title = defaultTitle?

相同

由于

2 个答案:

答案 0 :(得分:2)

@property (assign,getter=isSelected) BOOL selected;

在头文件中,指定您希望其他类能够使用myObject.isSelected来访问此属性。您在类的公共接口中定义此名称。


@synthesize title = defaultTitle;

在您的实现文件中,指定您已为其他类定义了一个名为title的属性,但在您的类的内部,您希望实际使用名称defaultTitle。这通常在您声明了自己的名为defaultTitle的私有实例变量时完成,您不希望人们直接修改它。

答案 1 :(得分:1)

@property (assign,getter=isSelected) BOOL selected;

必须指定getter以符合命名约定。请参阅Apple的手册引文:

  

通常,您应指定作为键值的访问者方法名称   符合编码(参见键值编码编程指南) - 常见   使用getter装饰器的原因是坚持   布尔值的isPropertyName约定。

@property (copy,setter=setDefaultTitle:) NSString* title; 如果你还指定了getter,它也是一样的。但是,您必须使用@synthesize title = defaultTitle;为getter / setter方法生成正确的方法名称。