分类Category

301 阅读1分钟
  • (void)initialize 通过objc_msgSend第一次接到消息进行调用 如果子类没有实现initialize,会调用父类的(所以有可能调用多次) 如果分类实现initialize,就会覆盖本身的initialize调用

load

是根据函数地址直接调用 load是在runtime加载类、分类的时候调用(只有1次)

调用顺序 调用子类的load之前,会先调用父类的load 先编译的类,优先调用load

initialize 先初始化父类 再初始化子类

通过runtime动态的添加到类中

用分类都做了那些事?

1.声明似有方法

2.分解体积庞大的类文件

3.把Framework的私有方法公开

一、特点

1.运行时决议

2.为系统类添加分类

二、分类中可以添加那些内容

实例方法

类方法

协议

属性(get和set方法)

name 类名

cls 所属类

加载调用栈

分类添加的方法可以覆盖原类方法 同名分类方法谁生效取决于编译顺序 名字相同分类会引起编译报错