一、分类
分类的作用:
声明私有方法, 分解大体积的文件。
分类是在编译的时候进行的。
一个类如果有多个分类文件。 在分类的方法里是存储在一个hashMap中的
当多个分类重写同名方法的时候会调用最后一个被编译的同名方法。
二、KVO KVC
KVO是观察者模式的实现。
使用了isa混写(isa-swizzling)来实现KVO
使用setter方法改变值KVO会生效
调用setter方法
- (void)setValue:(id)value{ [self willChangeValueForKey:@"key"]; [supersetValue:value]; [self didChangeValueForKey:@"key"];}
在调用的时候 runtime会生成一个子类 并且把当前类的isa指针指向这个子类
三、assign 和 __weak的区别
__weak只可以修饰对象类型的属性
而assing可以修饰对象和基本类型
但是__weak不会产生野指针是安全的。 但是assign是不安全的 可能会
网友评论