2011-10-14 62 views
0

嗨,我是新來的目標C,當我閱讀開發人員文檔時,我經常看到這種情況。setEditable and isEditable

有命名方法setEditable或setWhateverName和isEditable或isWhateverName

是什麼設定「布拉布拉」之間的差異,是「布拉布拉」

和例子是爲NSButton類

-setAlternateTitle 

-alternateTitle

NSImageView類

-isEditable 

-setEditable:

我認爲,在這兩個例子中,後者需要paramater和以前的人不知道。它是否正確?

回答

3

這些被稱爲mutator methods。它們是用於訪問各種Objective-C properties的方法,它們基本上都是類成員變量(所謂的ivars實例變量),除非您無法直接訪問它們。您只能通過設置器獲取器方法訪問ivars。

getter方法獲取屬性的當前值。對於非布爾屬性,通常會給出與所討論的屬性相同的名稱(例如-alternateTitle),或者對於布爾屬性使用is前綴(例如-isEditable)。

setter方法爲屬性設置新值。通常給予以set作爲前綴的屬性名稱,例如, -setEditable:

例如:

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

非常感謝這一點。 :) – Heartbound07

1
-setAlternateTitle

-alternateTitle和是默認的設定器和吸氣劑(例如NSObjectint),基於標準命名約定。

setEditableisEditable是布爾(BOOL)屬性的常規setter和getter。在布爾情況下,它提高了可讀性。請注意,這裏的變化只在getter中。

+0

ty非常..... – Heartbound07

1

定居者和吸氣者有一種模式。

對於非BOOL的ivars

  • 二傳手有一個 「設置」 前綴: 「setMyIvar」 - 注意大寫 「M」。
  • 該getter是簡單的伊娃爾名稱:「myIvar」 - 注意沒有「get」前綴。*

這些都是由酒店,前創建的缺省值:

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

對於BOOL高德有兩種模式:

  • 二傳手有一個 「設置」 前綴:「setMyBoolIvar 「 - 注意大寫字母」M「。
  • 該getter是簡單的伊娃爾名稱:「myBoolIvar」 - 注意沒有「get」前綴。 *

  • 二傳手有一個「是」字頭:「isMyBoolIvar」 - 公告不存在「搞定」的前綴,而大寫的「M」。

這些都是由酒店,前創建的缺省值:

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

或分別

@property (nonatomic, assign, getter=isMyBoolIvar) (BOOL *)myBoolIvar; 
相關問題