引语
最近一直想提升一下自己的技能,目前做开发也有2年左右了,但是一直还是初级水平,如果能把当前语言的底层知识学的很透彻,也可以进入中级水平了,因为我非科班出身,所以对C语言的很多概念理解的还是不深入,也很少接触;所以这次在学习OC对象模型的时候,就遇到一个低级的问题;由于对概念的理解不清楚导至困惑了许久!
- 先看一段代码吧
typedef struct objc_class *Class;
typedef struct objc_object {
Class isa;
} *id;
typedef structobjc_class *Class; 当时对这句话的理解是 声明了一个指针变量Class;
- 而下面 就很奇怪了 Class isa; 变量怎么可以 声明变量呢,c语言也没有这中用法啊,后来就问了一个朋友,原来 这里有个修饰符号 typedef 它和 #define 都差不多,只不过#define 是对常量 起的 别名,** typedef** 也是 对当前这个类型起了 一个别名 Class = struct objc_class ;
- 这样 就 完全明白了,此时的Class 就相当于(int or Nsstring)这样的类型,他是一个 指向结构体类型的指针 就像typedef int P; P 是指向 int 类型的一个指针类型,比如声明 ** P p;Class*也就是结构体类型的指针类型; 他是一个类型;而不是一个变量;
以上是我的疑惑,然后怎么去理解OC的对象模型呢,可以参考一位网友的博客 ,写的逻辑更清晰易懂。