亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么對實例變量使用下劃線,而不對實例屬性使用下劃線?

為什么對實例變量使用下劃線,而不對實例屬性使用下劃線?

胡說叔叔 2019-10-12 13:38:59
我是iphone開發的新手。我正在研究iphone中的語音記錄。我從Apple下載了“ Speak here”示例程序。該程序包含LevelMeter.h文件,其中 @interface LevelMeter : UIView {CGFloat                     _level, _peakLevel;   }該屬性設置為 @property                      CGFloat level; @property                      CGFloat peakLevel;聲明_level之類的變量并將其屬性設置為level有什么用。請解釋一下。謝謝。
查看完整描述

3 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超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; }


查看完整回答
反對 回復 2019-10-12
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

下劃線表示只能從其自己的類內部訪問的內容。因此,不應從類外部訪問實例變量,而可以從屬性外部訪問實例變量。


查看完整回答
反對 回復 2019-10-12
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

在ivar中添加下劃線的原因只是為了使ivar和代碼中的屬性之間的區別更加清晰。蘋果似乎廣泛使用了這種樣式。您不必自己編寫訪問器方法:@synthesize level = _level;會在兩者之間建立自動連接。

查看完整回答
反對 回復 2019-10-12
  • 3 回答
  • 0 關注
  • 594 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號