美文网首页八天学会OC
第04天OC语言(16):类的本质及存储细节

第04天OC语言(16):类的本质及存储细节

作者: liyuhong | 来源:发表于2017-07-21 17:33 被阅读14次
    • 不要等到明天,明天太遥远,今天就行动。
    须读:看完该文章你能做什么?

    能清楚知道类的调用方法和继承内部本质的<底层原理>。

    学习前:你必须会什么?

    什么是类,什么是实例对象,什么是对象方法,什么是类方法,什么是isa指针
    以及代码区是怎么存放变量和对象的


    一、本章笔记
     一、类的本质:
         类其实也是一个对象, 这个对象 会在这个类 第一次被使用的时候 创建
         只要有了类对象, 将来就可以通过 类对象 来 创建实例对象
         实例对象 有一个 isa指针, 指向创建自己的类对象
     二、
         类对象中保存了 当前对象所有的对象方法
         当给 一个实例对象方法消息的时候, 会根据实例对象中的 isa指针去创建对应的类对象中查找
    
    
    二、code
    main.m
    #pragma mark 16-类的本质及存储细节
    #pragma mark 概念
    /*
     一、类的本质:
         类其实也是一个对象, 这个对象 会在这个类 第一次被使用的时候 创建
         只要有了类对象, 将来就可以通过 类对象 来 创建实例对象
         实例对象 有一个 isa指针, 指向创建自己的类对象
     二、
         类对象中保存了 当前对象所有的对象方法
         当给 一个实例对象方法消息的时候, 会根据实例对象中的 isa指针去创建对应的类对象中查找
     */
    #pragma mark - 代码
    #import <Foundation/Foundation.h>
    #pragma mark 类
    #import "Person.h"
    #pragma mark - main函数
    int main(int argc, const char * argv[])
    {
    
        Person *p = [[Person alloc]init];
        [p setAge:33]; // 先根据实例对象 去找类对象(然后查找类对象里面存放的实例方法)
        [Person test]; // 直接去查找 类对象(存放对象方法的) 然后再找元类对象(存放类方法的)
        
        
        // 所有类的'类对象'的继承关系 就是 '元类对象'的继承关系
        return 0;
    }
    
    
    Person
    >>>.h
    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
    @property int age;
    
    + (void)test;
    @end
    
    >>>.m
    #import "Person.h"
    
    @implementation Person
    
    + (void)test
    {
        
    }
    @end
    
    

    一、类的分析图

    image.png

    二、官方图

    image.png

    三、本文章分析图

    image.png

    相关文章

      网友评论

        本文标题:第04天OC语言(16):类的本质及存储细节

        本文链接:https://www.haomeiwen.com/subject/ooovhxtx.html