美文网首页八天学会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