iOS中id與NSObject 和id的區別

2021-06-20 19:27:44 字數 799 閱讀 1848

1. 我們來看看id的定義,它就是乙個指標,它可以指向的型別不僅限於nsobject

1typedefstructobjc_class *class;

2typedefstructobjc_object *id;

2. nsobject*就是 nsobject型別的指標了,它範圍較小。

3. id是指標,它要求它指向的型別要實現nsobject protocol,

ios中很多類定義很奇葩,類名叫nsobject,定義個介面也叫nsobject,但是它倆不是乙個東東。

而nsobject類實現了nsoject介面,所以id可以指向nsobject的物件。

nsobject實現類似這樣:

1@inte***censobject

4

如果我們來看看nsproxy的定義,你會發現,它不是繼承自nsobject,但是卻實現了nsobjecct介面,

nsproxy定義類似這樣:

1@inte***censproxy

4

所以id可以指向nsproxy的物件。

id和NSObject 的區別和聯絡

在ios的sdk標頭檔案中,能看到一些定義,在objc.h中,可以看到id的定義如下 typedef struct objc class class typedef struct objc class id 在nsobject.h中,可以看到nsobject類的定義如下 inte ce nsobje...

iOS複習筆記15 NSObject

為了描述方便,把如下 貼出來 inte ce student nsobject void go void showname nsstring name void introduce nsstring name nsstring address end student stu student allo...

iOS中NSObject的兩種含義 類和協議詳解

前言 協議中是什麼意思?子類繼承了父類,子類會遵守父類遵守的協議嗎?會遵守nsobject協議,但是只在標頭檔案中宣告,編譯器是不會自動生成例項變數的。需要自己處理getter和setter 方法 ns cf cg ca ui這些字首分別是什麼含義 cf cocoafundatwww.cppcns....