黑马程序员技术交流社区

标题: 为什么叫类对象,而不叫结构体变量?? [打印本页]

作者: 0826iOS_sunzhen    时间: 2015-9-15 23:35
标题: 为什么叫类对象,而不叫结构体变量??
类的本质其实也是一个对象(类对象),是Class类型,可是Class不就是结构体指针的别名吗?为什么不叫结构体指针变量,我有点凌乱
类的结构体
  1. struct objc_class {
  2.     Class isa  OBJC_ISA_AVAILABILITY;

  3. #if !__OBJC2__
  4.     Class super_class                                        OBJC2_UNAVAILABLE;
  5.     const char *name                                         OBJC2_UNAVAILABLE;
  6.     long version                                             OBJC2_UNAVAILABLE;
  7.     long info                                                OBJC2_UNAVAILABLE;
  8.     long instance_size                                       OBJC2_UNAVAILABLE;
  9.     struct objc_ivar_list *ivars                             OBJC2_UNAVAILABLE;
  10.     struct objc_method_list **methodLists                    OBJC2_UNAVAILABLE;
  11.     struct objc_cache *cache                                 OBJC2_UNAVAILABLE;
  12.     struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;
  13. #endif

  14. } OBJC2_UNAVAILABLE;
  15. /* Use `Class` instead of `struct objc_class *` */
复制代码
  1. /// An opaque type that represents an Objective-C class.
  2. typedef struct objc_class *Class;
复制代码

是不是我的理解出现问题了,还是这仅仅是一个定义




作者: 范文鹏    时间: 2015-9-16 01:02
我擦 完全看不懂啊  不过只要知道定义就好啦
作者: 0826iOS_sunzhen    时间: 2015-9-16 23:19
范文鹏 发表于 2015-9-16 01:02
我擦 完全看不懂啊  不过只要知道定义就好啦

今天老师说了,类的本质是对象,是一种特殊的对象。暂且这么理解
作者: 企业部-阿狗老师    时间: 2015-9-17 00:13
Objective-C类是由Class类型来表示的,它实际上是一个指向objc_class结构体的指针。

就相同于是一种类型 而不再属于结构体了  好像OC上面有一段分类就是关于 各种体系的 忘了
作者: 企业部-阿狗老师    时间: 2015-9-17 00:24
结构体指针是他的底层




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2