3 回答

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
您所看到的是使用下劃線來區(qū)分實(shí)例變量和屬性。因此,一個(gè)類聲明可能是:
@interface Foo {
NSString* _label;
....
}
@property (nonatomic, retain) NSString* label; // notice: no underline
然后,在實(shí)現(xiàn)文件中,您將擁有:
@synthesize label=_label; // the property is matched with the ivar
現(xiàn)在,在實(shí)現(xiàn)內(nèi)部,如果您想直接訪問實(shí)例變量,則可以使用,_label而要使用屬性訪問器方法(該方法負(fù)責(zé)保留/釋放以及其他一系列簿記任務(wù))self.label。從外面看,您總是想要穿過該{object}.label物業(yè)。
另一種方法是不帶下劃線而僅使用:
NSString* label;
@property (nonatomic, retain) NSString* label;
...
@synthesize label;
它的工作原理相同,但那么它可能會混淆的人讀的代碼,并試圖跟蹤labelVS self.label。我個(gè)人覺得Apple約定(帶下劃線)更容易閱讀,但這是優(yōu)先選擇的問題。

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
正如人們已經(jīng)說過的_someVar曾經(jīng)說過,變量是私有的。這是一個(gè)簡單的約定,并不重要。
另一個(gè)用途是,在C中使用Wayback機(jī)器旅行時(shí),_function()表示該功能不是平臺可移植的,而__function()則表示該功能不是編譯器可移植的。因此,在標(biāo)準(zhǔn)C庫中,有時(shí)會看到名稱前帶有_或__的變量,這就是這些函數(shù)所代表的含義。
- 3 回答
- 0 關(guān)注
- 451 瀏覽
添加回答
舉報(bào)