我是iphone開發(fā)的新手。我正在研究iphone中的語音記錄。我從Apple下載了“ Speak here”示例程序。該程序包含LevelMeter.h文件,其中 @interface LevelMeter : UIView {CGFloat _level, _peakLevel; }該屬性設(shè)置為 @property CGFloat level; @property CGFloat peakLevel;聲明_level之類的變量并將其屬性設(shè)置為level有什么用。請解釋一下。謝謝。
3 回答

翻過高山走不出你
TA貢獻1875條經(jīng)驗 獲得超3個贊
提醒
該@property指令等效于聲明一個setter和一個getter。對于level,
@property CGFloat level;
可以替換為
- (CGFloat)level;
- (void)setLevel:(CGFloat)v;
你的問題
為什么要level為一個名為的變量聲明一個名為屬性的屬性,_level以及為什么要首先使用一個開頭來命名變量_?我不知道。
如何運作,在回答LevelMeter.m:
- (CGFloat)level { return _level; }
- (void)setLevel:(CGFloat)v { _level = v; }

素胚勾勒不出你
TA貢獻1827條經(jīng)驗 獲得超9個贊
下劃線表示只能從其自己的類內(nèi)部訪問的內(nèi)容。因此,不應(yīng)從類外部訪問實例變量,而可以從屬性外部訪問實例變量。

慕哥9229398
TA貢獻1877條經(jīng)驗 獲得超6個贊
在ivar中添加下劃線的原因只是為了使ivar和代碼中的屬性之間的區(qū)別更加清晰。蘋果似乎廣泛使用了這種樣式。您不必自己編寫訪問器方法:@synthesize level = _level;
會在兩者之間建立自動連接。
- 3 回答
- 0 關(guān)注
- 572 瀏覽
添加回答
舉報
0/150
提交
取消