【问题标题】:setEditable and isEditablesetEditable 和 isEditable
【发布时间】:2011-12-08 02:11:23
【问题描述】:

您好,我是 Objective c 的新手,我在阅读开发人员文档时经常看到这一点。

有名为 setEditable 或 setWhateverName 和 isEditable 或 isWhateverName 的方法

set"blabla"和is"blabla"有什么区别

例如 NSButton 类

-setAlternateTitle

-alternateTitle

NSImageView 类

-isEditable

-setEditable:

我认为这两个示例中的后者都带有参数,而前者则没有。这是正确的吗?

【问题讨论】:

    标签: objective-c macos methods parameters


    【解决方案1】:

    这些被称为mutator methods。它们是您用于访问各种Objective-C properties 的方法,它们基本上是类成员变量(所谓的ivars实例变量),但您不能直接访问它们.您只能通过 settergetter 方法访问 ivars。

    getter 方法获取属性的当前值。对于非布尔属性,它的名称通常与所讨论的属性相同(例如 -alternateTitle),对于布尔属性,它通常被赋予一个带有 is 前缀的名称(例如 -isEditable)。

    setter 方法为属性设置一个新值。它通常被赋予以set 为前缀的属性名称,例如-setEditable:.

    例如:

    if ([myObject isEditable])  // Is the object editable?
        /* do stuff */ ;
    ...
    [myObject setEditable:YES];  // Make it editable
    

    【讨论】:

      【解决方案2】:

      -setAlternateTitle-alternateTitle 是基于标准命名约定的默认 setter 和 getter(例如 NSObjectint)。

      setEditableisEditable 是布尔 (BOOL) 属性的常规设置器和获取器。在布尔情况下,它提高了可读性。请注意,这里的变化仅在 getter 中。

      【讨论】:

        【解决方案3】:

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

        对于非 BOOL 变量

        • setter 有一个“set”前缀:“setMyIvar”——注意大写 “米”。
        • 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;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-08
          • 1970-01-01
          • 2015-02-15
          • 1970-01-01
          • 1970-01-01
          • 2012-01-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多