OC学习之类的进阶

来源:互联网 发布:重庆办公软件培训班 编辑:程序博客网 时间:2024/05/16 11:47
面向对象编程的三大特性:
   继承,封装,多态(还有一个抽象)

类的本质
    类的本质其实也是一个对象(类对象):
        1.类对象在程序运行时,一致存在
        2.类对象是一种数据结构,存储类的基本信息:类的大小,类的名称,类的版本,类的消息与函数的映射表
        3.类对象保存的信息在程序编译时确定,在第一次使用该类的时候被加载到内存中
        4.类对象代表类,class代表类对象,类方法属于类对象
        5.如果消息的接受者是类名,则类名代表类对象
        6.运行时,所有累的额实例都有类对象生成,类对象会把实例的isa的值修改成自己的地址
        7.从类对象里可以知道父类信息,可以响应方法等
        8.类对象正能使用类方法,不能使用实例方法


类对象的使用
    1.原来使用类名可以做的事情
       (1)创建实例对象
          Person *p = [Person new];
       (2)调用类方法
           [Person test];
    2.更进一步的使用
       Person *p = [Person new];
       Class c1 = [p class];//c1就是Person,他是个类
      
       Class c1= [Person class];//获取对象
       Person *p = [c1 new];//实用类对象穿件实例对象
       [p test];//结果是打印-test方法,也就是调用的是对象方法
       [c1 test];//结果是打印+test方法,也就是调用的类方法



类对象的存储
    

    其实类对象isa指针并不是指向代码区,而是指向源类的Class

    

    类对象中存在大量的SEL,如下图所示:
    



SEL类型
    全称:方法的存储位置。
    验证方法:
    SEL s1 = @selector(test);//手动将test方法包装成SEL类型
    [p perfomselector:s1];//响应
0 0
原创粉丝点击