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

1:什么是instancetype

????? ?instancetype是clang 3.5 開始提供的一個關鍵字,表示某個方法返回的位置類型的OC對象。


2:instancetype的作用

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

@interface NSArray

+ (id)constructAnArray;

@end?

當我們使用如下方法初始化NSArray時:

[NSArray constructAnArray];

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

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

@interface NSArray

+ (instancetype)constructAnArray;

@end

當使用相同方法初始化NSArray時:

[NSArray constructAnArray];

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

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


3:instancetype和id的異同

????? ?相同點:

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

????? ?不同點:?

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

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

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

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

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

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