Objective-C id 指針

此文實(shí)際成于 2015/07/28

What is 'id'

Question from https://www.quora.com/What-are-some-good-questions-to-test-someones-Objective-C-and-iOS-Development-skills

id 是任何 Objective-C 類(lèi),協(xié)議的基本類(lèi)型。
objc/objc.h 中聲明如下:

/// An opaque type that represents an Objective-C class.
typedef struct objc_class *Class;

/// Represents an instance of a class.
struct objc_object {
    Class isa  OBJC_ISA_AVAILABILITY;
};
/// A pointer to an instance of a class.
typedef struct objc_object *id;

可以看到 idstruct objc_object 的結(jié)構(gòu)指針。

objc-private.h 中可以看到 其更具體的定義。以下是開(kāi)頭部分:

struct objc_object {
private:
    isa_t isa;

public:
}

繼承自 struct objc_object的其他子結(jié)構(gòu)

  1. protocol_t
struct protocol_t : objc_object {
}
  1. objc_class
struct objc_class : objc_object {

}
  1. swift_class_t
struct swift_class_t : objc_class {

}

swift_class_t 作為 objc_class子結(jié)構(gòu),應(yīng)該為了兩者互操作。
objc_class實(shí)現(xiàn)中有對(duì)是否是 Swift的判斷:

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

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

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