嗨,我是目标c的新手,当我阅读开发者文档时,我经常看到这一点。
有些方法名为setEditable或setWhateverName,isEditable或isWhateverName
“blabla”和“blabla”之间有什么区别
和示例将是NSButton类
-setAlternateTitle
和-alternateTitle
或
NSImageView类
-isEditable
和-setEditable:
我认为两个例子中的后者都采用了参数,而前者没有。这是对的吗?
答案 0 :(得分:3)
这些被称为mutator methods。它们是用于访问各种Objective-C properties的方法,它们基本上是类成员变量(所谓的 ivars 或实例变量),除非您无法访问他们直接。您只能通过 setter 和 getter 方法访问ivars。
getter 方法获取属性的当前值。对于非布尔属性,它通常被赋予与所讨论的属性相同的名称(例如-alternateTitle
),或者对于布尔属性,给出具有is
前缀的名称(例如-isEditable
)。
setter 方法为属性设置新值。通常会给出前缀为set
的属性名称,例如-setEditable:
。
例如:
if ([myObject isEditable]) // Is the object editable?
/* do stuff */ ;
...
[myObject setEditable:YES]; // Make it editable
答案 1 :(得分:1)
-setAlternateTitle
和-alternateTitle
是默认的setter和getter(例如NSObject
或int
),基于标准命名约定。
setEditable
和isEditable
是布尔值(BOOL
)属性的传统setter和getter。在布尔值的情况下,它提高了可读性。请注意,此处的变化仅在吸气剂中。
答案 2 :(得分:1)
定居者和吸气者有一种模式。
对于非BOOL ivars
这些是属性创建的默认值,例如:
@property (nonatomic, retain) (NSString *)myString;
对于BOOL ivars,有两种模式:
getter只是ivar名称:“myBoolIvar” - 注意没有“get”前缀。 *
或
这些是属性创建的默认值,例如:
@property (nonatomic, assign) (BOOL *)myBoolIvar;
或分别
@property (nonatomic, assign, getter=isMyBoolIvar) (BOOL *)myBoolIvar;