[英]Naming conventions for BOOL Obj-C 2 properties?
我有一個只讀BOOL屬性。 這里的主要命名模式是什么?
背景:對於普通的舊方法聲明,接受的模式
- (BOOL)isEditable;
- (void)setEditable:(BOOL)flag;
在@property世界中,通常表示為
@property(getter=isEditable) BOOL editable;
但是,有相反的例子。 例如在CalStore / CalCalendar.h中
@property(readonly) BOOL isEditable;
(CalCalendar在這里是錯誤的,還是對於只讀BOOL屬性來說也是一個可接受的命名模式?)
我有一個管理視圖的控制器,可能會也可能不會調整大小。 該物業是只讀的。
@property(readonly) BOOL viewIsResizable;
@property(readonly) BOOL isViewResizable;
@property(readonly, getter=isViewResizable) BOOL viewResizable;
哪種模式最自然或像Cocoa一樣?
引自ADC
如果屬性表示為形容詞,則格式為:
- (void)setAdjective:(BOOL)flag; - (BOOL)isAdjective;
例如:
- (void)setEditable:(BOOL)flag; - (BOOL)isEditable;
如果屬性表示為動詞,則格式為:
- (void)setVerbObject:(BOOL)flag; - (BOOL)verbObject;
例如:
- (void)setShowsAlpha:(BOOL)flag; - (BOOL)showsAlpha;
動詞應該是簡單的現在時。
| K <
我不認為這真的很重要,因為KVO會同時看到is<Key>
和<Key>
。
看看iPhone課程,我見過的最常見的模式是:
@property(nonatomic,getter = isHidden)BOOL隱藏;
這讓你以這些方式訪問該屬性:
obj.hidden = YES; // (1)
BOOL hidden = obj.hidden; // (2)
BOOL hidden = [obj isHidden]; // (3)
但不是:
BOOL hidden = obj.isHidden; // (4)
CalStore不遵循該慣例。 您將不得不使用第4行而不是第2行。
您想要使用適用於KVO,KVC和綁定等的那個。
我記得在KVO等人的Docs中讀過這篇文章。 , set
as well as get
and many others like countOf<
將查找is
, set
以及get
和許多其他像countOf<
KVC合規性檢查表比我做得更好。
CalStore示例似乎違反了慣例。 我堅持使用屬性名稱而不是方法名稱,其中沒有“is”。
對於BOOL吸氣劑來說,絕對要做的is...
您在CalStore中看到屬性設置的原因很可能是因為它是只讀的,並且為了頭文件的基本可讀性而編寫,因為:
@property(readonly) isEditable;
通常比以下更容易閱讀:
@property(readonly, getter=isEditable) editable;
對於第一種類型的屬性,在您的實現中,您可以執行以下任一操作:
@synthesize isEditable = editable;
或者只是定義訪問者:
- (BOOL)isEditable(void) { return editable; }
這使得潛在用戶更容易閱讀界面文件(標題)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.