nsobject.是oc
中所有類的基類.根據
lsp nsobject
指標就可以指向任意的
oc物件.
所以.nsobject
指標是1
個萬能指標
.可以執行任意的
oc物件.
缺點:如果要呼叫指向的子類物件的獨有的方法
.就必須要做型別轉換.
id是1個萬能指標
,可以指向任意的
oc物件.
1). id是
1個typedef
自定義型別
在定義的時候已經加了*
所以,宣告id
指標的時候不需要再加*了
. 2)
id指標是
1個萬能指標
,任意的
oc物件都可以指.
相同點:
萬能指標
都可以執行任意的
oc物件.
不同點:
通過nsobject
指標去呼叫物件的方法的時候
.編譯器會做編譯檢查.
通過id
型別的指標去呼叫物件的方法的時候
,編譯器直接通過
.無論你呼叫什麼方法.
注意:id指標只能呼叫物件的方法,不能訪問屬性
不能使用點語法
.如果使用點語法就會直接報編譯錯誤。
如果我們要宣告
1個萬能指標
千萬不要使用
nsobject
而是使用id
1).
如果返回值寫為父類型別的
.那麼子類來呼叫這個方法得到的就是父類指標.
解決的方式
:把返回值改為
id型別的.
2).
方法的內部建立的物件的是
不要寫死
.因為寫死建立的物件就固定了.
我們希望那
1個類來呼叫這個方法就建立那
1個類的物件.
把類名寫為
self那1
個類來呼叫這個方法
self
就指的是那1個類
.建立的就是那
1個類的物件.
3).
方法的返回值是
id型別的
.問題就是任意指標都可以接收這個方法的返回值.
編譯器連個警告都沒有.
如果方法的返回值是
instancetype
代表方法的返回值是當前這個類的物件.
1).instancetype
只能作為方法的返回值
.不能在別的地方使用.
id既可以宣告指標變數
也可以作為引數
也可以作為返回值.
2).
instancetype是1
個有型別的
代表當前類的物件.
id是1個無型別的指標
僅僅是1
個位址.
沒有型別的指標
.
C指標原理(18) C指標基礎
5 指標陣列 指標陣列就是陣列裡存放的是指標。include int main void for i 0 i 10 i return 1 上面定義了乙個指標陣列,陣列的每個元素都是指標,每個指標指向x陣列的相應元素。其中,p x為指標陣列,通過for迴圈中的p x i x i完成指標陣列每個元素的賦...
18 C 基礎 函式指標
int p1 10 p1 是乙個陣列,含有 10 個指標的陣列 int p2 10 arr p2 是乙個指標,指向含有 10 個整數的陣列 bool pf const string const string pf 是乙個函式,該函式返回為bool指標的函式,即返回bool bool pf const...
OC中instanceType和id的區別
今天在學習oc的過程中遇到關於instancetype和id的問題不太明白。查了一些資料後,總結它們兩個的區別和聯絡主要有以下幾點 相同點 instancetype和id都是作為方法的返回型別而被使用。不同點 1.instancetype可以返回和方法所在類相同型別的物件,id返回的型別只能是未知型...