您的位置:首页 > 移动开发 > Objective-C

OC学习之类的进阶

2015-07-22 16:43 459 查看
面向对象编程的三大特性:

   继承,封装,多态(还有一个抽象)

类的本质

    类的本质其实也是一个对象(类对象):

        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];//响应
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  objective-c 类 sel