- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
能清楚知道类的调用方法和继承内部本质的<底层原理>。
学习前:你必须会什么?
什么是类,什么是实例对象,什么是对象方法,什么是类方法,什么是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
一、类的分析图
二、官方图
三、本文章分析图