zoukankan      html  css  js  c++  java
  • 十:类的本质及isa指针和元类的简单介绍

    一、类的基本概念:

    1、类其实也是一个对象, 这个对象会在这个类第一次被使用的时候创建

    2、只要有了类对象, 将来就可以通过类对象来创建实例对象

    3、实例对象中有一个isa指针, 指向创建自己的类对象

    4、类对象中保存了当前对象所有的对象方法

    5、当给一个实例对象发送消息的时候, 会根据实例对象中的isa指针去对应的类对象中查找

    6、所有类对象的继承关系就是元类对象的继承关系

    二、isa指针

    1.每一个对象都包含一个isa指针.这个指针指向当前对象所属的类。

    2.[d bark];表示给d所指向的对象发送一条bark消息,调用对象的bark方法,此时对象会顺着内部的isa指针找到存储于类中的方法并执行。

    3.isa是对象中的隐藏指针,指向创建这个对象的类。

    4.通过isa指针我们可以在运行的时候知道当前对象是属于那个类。

    三、元类

    1、元类的定义:元类是类对象的类,每个类都有自己独一无二的元类,即

       (1)当你给对象发送消息时,消息是在寻找这个对象的类的方法列表。

       (2)当你给类发消息时,消息是在寻找这个类的元类的方法列表。

    元类是必不可少的,因为它存储了类的类方法。每个类都必须有独一无二的元类,因为每个类都有独一无二的类方法。

    2、元类的类:

       (1)元类,就像类一样,它也是一个对象,也可以调用它的方法。这就意味着他必须也有一个类。

     (2)所有的元类都使用根元类(继承体系中处于顶端的类的元类)作为他们的类。即所有NSObject的子类的元类都会以NSObject的元类作为他们的类。

       (3)所有的元类使用根元类作为他们的类,根元类的元类则就是它自己。也就是说基类的元类的isa指针指向他自己。

  • 相关阅读:
    11
    centos删除安装vsftpd
    linux安装jdk
    linux安装mysql
    关闭opera自动更新
    执行处理程序“System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerWrapper”的子请求时出错
    ckeditor3.6.4+ckfinder2.2.2 上传图片到指定目录
    关于android@home的一点想法
    2012书单
    SAP GUI saplogon.ini配置文件的位置
  • 原文地址:https://www.cnblogs.com/hissia/p/5442253.html
Copyright © 2011-2022 走看看