self.和下劃線的區(qū)別

self.var 通過訪問方法的引用(包括set和get方法)
_var 直接引用(不通過set和get方法)

@interface User : NSObject
@property (nonatomic, assign) NSInteger age;
@end

@implementation User
@synthesize age; //LLVM 4.0之后這一行可以省略锣尉,編譯器會(huì)自動(dòng)生成刻炒,@synthesize會(huì)自動(dòng)生成set和get方法,但當(dāng)你不 需要編譯器做這些的時(shí)候自沧,可以使用@dynamic
@end

這段代碼會(huì)被編譯器解釋為:

 @interface User : NSObject{
    NSInteger age;  //實(shí)例變量
 }
 @end

 @implementation User
 -(void)setAge:(NSInteger)newAge{
    age=newAge;
 }
 -(void)age{
    return  age;
 }
 @end

如果同時(shí)添加了實(shí)例變量(iva)和屬性(property)會(huì)怎么樣呢坟奥?如果這個(gè)變量有相同的變量名和類型树瞭,編譯器將直接使用它而不是產(chǎn)生一個(gè)新的變量。
對(duì)于modern runtime來說爱谁,實(shí)例變量在需要的時(shí)候生成晒喷。如果已經(jīng)存在一個(gè)同名的實(shí)例變量,這個(gè)已經(jīng)存在的變量就會(huì)被使用访敌。
對(duì)于legacy runtime來說凉敲,實(shí)例變量必須已經(jīng)在當(dāng)前類的聲明中聲明過。如果一個(gè)同名實(shí)例變量作為屬性存在并且它的類型和屬性的類型兼容寺旺,這個(gè)同名實(shí)例變量將被使用爷抓,否則將發(fā)生編譯錯(cuò)誤。

如果要支持Legacy runtime阻塑,必須提供一個(gè)同名并且和屬性類型兼容的實(shí)例變量或者在@synthesize語句里面指定另外一個(gè)已經(jīng)存在的實(shí)例變量蓝撇。**

沒用下劃線的legacy代碼:

 @interface User : NSObject { 
      NSInteger age;
 }
 @property (nonatomic, assign) NSInteger age;
 @end

 @implementation User
 @synthesize age;
 @end

使用下劃線規(guī)則:

 @interface User : NSObject { 
     NSInteger _age;
 }
 @property (nonatomic, assign) NSInteger age;
 @end

 @implementation User
 @synthesize age = _age;
 @end

注:
Modern Runtime運(yùn)行在大多數(shù)現(xiàn)在平臺(tái)和體系結(jié)構(gòu)中,他是Apple幾年前開始64bits開發(fā)的時(shí)候重新編寫的陈莽。Legacy Runtime是NextStep1990時(shí)代的產(chǎn)物唉地。Legacy Runtime因?yàn)?進(jìn)制兼容問題而無法支持一些特性,而Mordern Runtime的設(shè)計(jì)目標(biāo)就是支持這些特性传透。
Legacy Runtime在32-bit MacOS以及32-bit上的iPhone模擬器上運(yùn)行著耘沼。Modern Runtime運(yùn)行在64-bit MacOS,iPhone Device以及64-bits下的iPhone Simulator上朱盐。對(duì)于雪豹上面的iOS開發(fā)者群嗤,他們不用再擔(dān)心模擬器和真機(jī)跑在不同的Runtime下,真對(duì)于iOS開發(fā)者來說的一個(gè)重大意義是:你現(xiàn)在可以生成一個(gè)應(yīng)用程序兵琳,然后同時(shí)運(yùn)行在不同iPhone Simulator下面(細(xì)心的用戶可能會(huì)注意到狂秘,iOS S4開始,編譯一個(gè)版本后躯肌,要切換不同device的模擬器并不需要重新編譯代碼了)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末者春,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子清女,更是在濱河造成了極大的恐慌钱烟,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫡丙,死亡現(xiàn)場(chǎng)離奇詭異拴袭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)曙博,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門拥刻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人父泳,你說我怎么就攤上這事般哼∥馔簦” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵蒸眠,是天一觀的道長(zhǎng)浇坐。 經(jīng)常有香客問我,道長(zhǎng)黔宛,這世上最難降的妖魔是什么近刘? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮臀晃,結(jié)果婚禮上觉渴,老公的妹妹穿的比我還像新娘。我一直安慰自己徽惋,他們只是感情好案淋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著险绘,像睡著了一般踢京。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宦棺,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天瓣距,我揣著相機(jī)與錄音,去河邊找鬼代咸。 笑死蹈丸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呐芥。 我是一名探鬼主播逻杖,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼思瘟!你這毒婦竟也來了荸百?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤滨攻,失蹤者是張志新(化名)和其女友劉穎够话,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铡买,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡更鲁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奇钞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡漂坏,死狀恐怖景埃,靈堂內(nèi)的尸體忽然破棺而出媒至,到底是詐尸還是另有隱情,我是刑警寧澤谷徙,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布拒啰,位于F島的核電站,受9級(jí)特大地震影響完慧,放射性物質(zhì)發(fā)生泄漏谋旦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一屈尼、第九天 我趴在偏房一處隱蔽的房頂上張望册着。 院中可真熱鬧,春花似錦脾歧、人聲如沸甲捏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽司顿。三九已至,卻和暖如春兄纺,著一層夾襖步出監(jiān)牢的瞬間大溜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工估脆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猎提,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓旁蔼,卻偏偏與公主長(zhǎng)得像锨苏,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棺聊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容