OC中instanceType和id的區別

2022-07-28 06:45:12 字數 628 閱讀 1260

今天在學習oc的過程中遇到關於instancetype和id的問題不太明白。查了一些資料後,總結它們兩個的區別和聯絡主要有以下幾點:

相同點:instancetype和id都是作為方法的返回型別而被使用。

不同點:

1.instancetype可以返回和方法所在類相同型別的物件,id返回的型別只能是未知型別的物件;

對於簡易建構函式,用instancetype更好一點,因為編譯器因此會知道返回的是什麼型別的方法物件,而用id則不會,它只會返回未知型別的物件;

2.instancetype在錯誤檢查機制上更優於id,由於instancetype能夠在無關聯返回型別中返回物件的型別,因此更利於開發者檢測到無關聯返回型別中的錯誤。而id返回的是未知型別,在無關聯返回型別中檢錯時沒有instancetype更易於檢測錯誤。

ps:關聯返回型別:能夠返回乙個方法所在型別的物件;

非關聯返回型別:無法返回乙個方法所在型別的物件;

3 instancetype作用:(這個作者寫的很好,順便轉過來!)

instancetype這個關鍵字

重點 如果是構造方法這必須這麼寫 原因是 當使用id的時候,編譯不會報錯,而instancetype編譯就會報錯 id initwithdict nsdictionary dict return self instancetype 知識點 1 instancetype在型別表示上跟id一樣,可以表示...

id和instancetype的異同

相同點 都可以作為方法返回值型別 在initwithname 方法中是一樣的,例如 id initwithname nsstring name instancetype initwithname nsstring name 編譯器在編譯時直接將id轉換成instancetype型別 不同點 1.in...

OC學習筆記 OC中的類

1.objc跟c的區別與聯絡 首先 objc是乙個物件導向的語言 封裝 繼承 多型 objc相當於c的乙個超集 即objc允許使用任何c語言 但增加了許多c沒有的特點 bigger easier 2.objc中的類與物件 類由介面 xx.h inte ce 和實現 xx.m implementati...