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

  • 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?

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

学习前:你必须会什么?

什么是类,什么是实例对象,什么是对象方法,什么是类方法,什么是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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容