美文网首页
Objective-C id 指针

Objective-C id 指针

作者: 一半晴天 | 来源:发表于2018-06-16 16:33 被阅读14次

此文实际成于 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 类,协议的基本类型。
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 的结构指针。

objc-private.h 中可以看到 其更具体的定义。以下是开头部分:

struct objc_object {
private:
    isa_t isa;

public:
}

继承自 struct objc_object的其他子结构

  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子结构,应该为了两者互操作。
objc_class实现中有对是否是 Swift的判断:

    bool isSwift() {
        return bits.isSwift();
    }

相关文章

  • 在学习swift的一些笔记(三)

    objective-c与swift的万能指针id 在objective-c中id的简单使用: 最简单的例子,id代...

  • id 和void *

    1. 指针类型 id是指向Objective-C对象的指针。 void *是任何东西的指针(无类型指针)。是“对...

  • Objective-C id 指针

    此文实际成于 2015/07/28 What is 'id' Question from https://www....

  • OC中id和NSObject *的区别

    id是一个指针。NSObject *是NSObject类型的指针。Objective-C中并非所有的类都继承自NS...

  • nil / Nil / NULL / NSNull的区别

    1.nil: 指向一个对象的空指针, 对Objective-C中id对象付空值.2.Nil:指向一个类的空指针, ...

  • iOS nil、NULL和NSNull 的使用

    nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和ni...

  • ios nil、NULL和NSNull 的使用

    nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和ni...

  • IOS Objective-c知识

    Objective-C的类型和常量 id是一个指针类型,可以指向任何类型的对象。 BOOL 和char是一样的,但...

  • Swift----声明

    在Objective-C中,通过使用指针来处理对象引用,指针可以为空,在Objective-C中称为nil。在Sw...

  • 用Swift处理动态类型的方法和对象

    在Objective-C中,id类型表示任何Objective-C类的实例对象。相反,Swift将id类型导入...

网友评论

      本文标题:Objective-C id 指针

      本文链接:https://www.haomeiwen.com/subject/kpybeftx.html