OC中instancetype與id的區(qū)別

我們?cè)诓檎褹PI的時(shí)候,經(jīng)常都會(huì)見到instancetype和id,他們區(qū)別并不大,都可以代表任何類型的對(duì)象.但是他倆還是有細(xì)微的差別的,接下來(lái)讓我們一步步去揭開他倆的面紗.

我們首先創(chuàng)建一個(gè)工程,新建一個(gè)Person類和一個(gè)Student類,并且Student類繼承自Person類.

Person類里面包含一個(gè)便利構(gòu)造器+ (id)person;
Student里面寫一個(gè)簡(jiǎn)單的實(shí)例方法(-號(hào)方法)- (void )test;

另外在說instancetype與id的區(qū)別之前,首先需要補(bǔ)充一個(gè)知識(shí):當(dāng)父類的便利構(gòu)造器想要被子類繼承的話,在父類的便利構(gòu)造器中要使用[self alloc]來(lái)創(chuàng)建對(duì)象,這樣才能使子類調(diào)用父類的便利構(gòu)造器.

我們?cè)谥骱瘮?shù)main.m中用Person的便利構(gòu)造器來(lái)創(chuàng)建Student對(duì)象,同時(shí)調(diào)用test方法.

person類方法的返回值為id時(shí),直接報(bào)錯(cuò)

接下來(lái),我們把環(huán)境改成MRC.

在MRC環(huán)境下,僅僅是警告,而且可以運(yùn)行成功,并打印結(jié)果
上面的是peron類方法返回值為id的情況下出現(xiàn)的問題,接下來(lái),我們看在環(huán)境ARC下,返回值為instancetype會(huì)是怎么樣的結(jié)果?

在ARC環(huán)境下,返回值為instancetype,依然可以運(yùn)行成功

同樣的在MRC環(huán)境中,依然可以運(yùn)行成功.通過簡(jiǎn)單的例子,我們可以看到instancetype和id的區(qū)別如下:

區(qū)別1:

在ARC(Auto Reference Count)環(huán)境下:

instancetype用來(lái)在編譯期確定實(shí)例的類型,而使用id的話,編譯器不檢查類型, 運(yùn)行時(shí)檢查類型.

在MRC(Manual Reference Count)環(huán)境下:

instancetype和id一樣,不做具體類型檢查

區(qū)別2:

id可以作為方法的參數(shù),但instancetype不可以

instancetype只適用于初始化方法和便利構(gòu)造器的返回值類型

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哄酝,一起剝皮案震驚了整個(gè)濱河市锨天,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌醉拓,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鼻忠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門哪亿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)粥烁,“玉大人,你說我怎么就攤上這事蝇棉√肿瑁” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵篡殷,是天一觀的道長(zhǎng)钝吮。 經(jīng)常有香客問我,道長(zhǎng)板辽,這世上最難降的妖魔是什么奇瘦? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮劲弦,結(jié)果婚禮上耳标,老公的妹妹穿的比我還像新娘。我一直安慰自己邑跪,他們只是感情好次坡,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著画畅,像睡著了一般砸琅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轴踱,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天症脂,我揣著相機(jī)與錄音,去河邊找鬼淫僻。 笑死诱篷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雳灵。 我是一名探鬼主播兴蒸,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼细办!你這毒婦竟也來(lái)了橙凳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤笑撞,失蹤者是張志新(化名)和其女友劉穎岛啸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茴肥,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坚踩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓤狐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞬铸。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡批幌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嗓节,到底是詐尸還是另有隱情荧缘,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布拦宣,位于F島的核電站截粗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鸵隧。R本人自食惡果不足惜绸罗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豆瘫。 院中可真熱鬧珊蟀,春花似錦、人聲如沸外驱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)略步。三九已至描扯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間趟薄,已是汗流浹背绽诚。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杭煎,地道東北人恩够。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像羡铲,于是被迫代替她去往敵國(guó)和親蜂桶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

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

  • 20- 枚舉,枚舉原始值,枚舉相關(guān)值,switch提取枚舉關(guān)聯(lián)值 Swift枚舉: Swift中的枚舉比OC中的枚...
    iOS_恒仔閱讀 2,297評(píng)論 1 6
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法也切,類相關(guān)的語(yǔ)法扑媚,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法雷恃,異常的語(yǔ)法疆股,線程的語(yǔ)...
    子非魚_t_閱讀 31,665評(píng)論 18 399
  • 前言:面試筆試都是必考語(yǔ)法知識(shí)點(diǎn)。請(qǐng)認(rèn)真復(fù)習(xí)和深入研究OC倒槐。 目錄:iOS-面試題-OC基礎(chǔ)篇 (1) - (84...
    麥穗0615閱讀 4,263評(píng)論 0 33
  • 下面是我最近兩年學(xué)習(xí)OC中的一些基礎(chǔ)知識(shí)旬痹,對(duì)于學(xué)習(xí)OC基礎(chǔ)知識(shí)的人可能有些幫助,拿出來(lái)分享一下,還是那句話不喜勿噴...
    小小趙紙農(nóng)閱讀 2,607評(píng)論 1 7
  • 聊天是件簡(jiǎn)單的事,但通過聊天讓人覺得你懂我人弓,其實(shí)是件極不簡(jiǎn)單的事沼死。 學(xué)會(huì)聊天,廣義上講可以掌握一種行之有效的社交技...
    知課ZOKO閱讀 943評(píng)論 0 3