oc 的 協變性與逆變性

2022-07-01 15:51:15 字數 625 閱讀 5637

?協變性與逆變性是型別關係在範疇論的定義。是型別的繼承關係在高階型別中的定義?

__kindof只是在統一繼承體系下方便了型別轉化,提供了使用時語法上的便捷;但是對於型別轉換是否正確不做判定;

kindderived *derived = [self getinstance];

- (__kindof kindbase *) getinstance{

return [kindderivedx new];

回到頂部

id,instancetype,__kindof作為返回值時的比較:

id:

優點:可以呼叫任何物件方法。

缺點:不能使用點語法,不能做編譯檢查。

xcode5 之前,返回 id。

instancetype:

優點:會自動識別當前類的物件.

xcode5 instancetype。

__kindof:

優點:呼叫方法時,通過返回值提示,可以看到具體的返回型別,如:person *,而前兩者不會看到。

xcode7 __kindof:表示當前類或者子類。

C 的協變性和逆變性

協變性。ienumerable string strings newlist string 引數 型別派生程度較大的例項化物件 分配給引數型別派生程度較小的物件引用。分配相容性被保留。ienumerable object objects strings 逆變性。假定我們有這麼個方法 static v...

C 中的協變性與逆變性 Part One

這篇部落格很著名,應該有很多人翻譯過了.但是忍住想自己翻譯一下。協變性 和 逆變性 是什麼意思?首先,我們需要理解對於任意兩個型別t和u,下面必有乙個陳述是正確的 下文會用到這4個陳述 舉個例子,想一下由animal,mammal,reptile,giraffe,tiger,snake和turtle...

深入理解泛型(二) 協變性和逆變性

引言 在c 2.0中泛型並不支援可變性的 可變性指的就是協變性和逆變性 我們知道在物件導向的繼承中就具有可變性,當方法宣告返回型別為stream,我們可以在實現中返回乙個filestream的型別,此時就存在乙個隱式的轉化 從filestream型別 子類引用 stream型別 父類引用 並且引用型...