iOS - instancetype和id的區(qū)別

1:什么是instancetype

????? ?instancetype是clang 3.5 開始提供的一個(gè)關(guān)鍵字,表示某個(gè)方法返回的位置類型的OC對(duì)象。


2:instancetype的作用

如果不是一個(gè)關(guān)聯(lián)返回類型的方法,如下:

@interface NSArray

+ (id)constructAnArray;

@end?

當(dāng)我們使用如下方法初始化NSArray時(shí):

[NSArray constructAnArray];

根據(jù)Cocoa的方法命名規(guī)范,得到的返回類型就和方法聲明的類型一樣,是id。

但是如果使用instancetype作為返回類型,如下:

@interface NSArray

+ (instancetype)constructAnArray;

@end

當(dāng)使用相同方法初始化NSArray時(shí):

[NSArray constructAnArray];

得到的返回類型和方法所在類的類型相同,是NSArray *

總結(jié)一下,instancetype的作用,就是使那些非關(guān)聯(lián)返回類型的方法返回所在類的類型。


3:instancetype和id的異同

????? ?相同點(diǎn):

????? ?都可以作為方法的返回類型

????? ?不同點(diǎn):?

①:instancetype可以返回和方法所在類相同類型的對(duì)象,id只能返回未知類型的對(duì)象。

②:instancetype只能作為返回值,不能像id那樣作為參數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • instancetype clang 3.5 提供的關(guān)鍵字, 表示:某方法返回未知類型的OC對(duì)象 都知道id任意...
    zfl1024閱讀 245評(píng)論 0 0
  • 相同點(diǎn):instanceType和id都是作為方法的返回類型而被使用。 不同點(diǎn): 1.instancetype可以...
    zero_zql閱讀 589評(píng)論 0 0
  • instancetype 是只能作為返回值而不能作為參數(shù)的。當(dāng)一個(gè)類返回相同類的實(shí)例的時(shí)候使用 instance...
    齊滇大圣閱讀 520評(píng)論 1 1
  • 相同點(diǎn) 都可以作為方法的返回類型,表示某個(gè)方法返回的未知類型的Objective-C對(duì)象。 不同點(diǎn) 1.insta...
    陽(yáng)光的影子v閱讀 332評(píng)論 0 1
  • 一直以為到本命年了,實(shí)際上卻只有二十三,足夠證明此刻的生活終究還是煩惱多過快活,畢竟能使人忘卻時(shí)間的應(yīng)該都是煩惱,...
    安琪qiqi閱讀 202評(píng)論 0 0

友情鏈接更多精彩內(nèi)容