setEditable和isEditable

时间:2011-10-14 21:20:55

标签: objective-c macos methods parameters

嗨,我是目标c的新手,当我阅读开发者文档时,我经常看到这一点。

有些方法名为setEditable或setWhateverName,isEditable或isWhateverName

“blabla”和“blabla”之间有什么区别

和示例将是NSButton类

-setAlternateTitle

-alternateTitle

NSImageView类

-isEditable

-setEditable:

我认为两个例子中的后者都采用了参数,而前者没有。这是对的吗?

3 个答案:

答案 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(例如NSObjectint),基于标准命名约定。

setEditableisEditable是布尔值(BOOL)属性的传统setter和getter。在布尔值的情况下,它提高了可读性。请注意,此处的变化仅在吸气剂中。

答案 2 :(得分:1)

定居者和吸气者有一种模式。

对于非BOOL ivars

  • setter有一个“set”前缀:“setMyIvar” - 注意大写 “M”。
  • getter只是ivar名称:“myIvar” - 注意没有“get”前缀。 *

这些是属性创建的默认值,例如:

@property (nonatomic, retain) (NSString *)myString;

对于BOOL ivars,有两种模式:

  • setter有一个“set”前缀:“setMyBoolIvar” - 注意大写“M”。
  • getter只是ivar名称:“myBoolIvar” - 注意没有“get”前缀。 *

  • setter有一个“is”前缀:“isMyBoolIvar” - 注意没有“get”前缀和大写“M”。

这些是属性创建的默认值,例如:

@property (nonatomic, assign) (BOOL *)myBoolIvar;

或分别

@property (nonatomic, assign, getter=isMyBoolIvar) (BOOL *)myBoolIvar;