iOS objective-C 语言特性

2021-03-21  本文已影响0人  KAKA_move

分类(Category)

用分类做什么?
用分类的特点(和扩展的区别)?
用分类可以什么内容?

runtime680源代码在苹果官方网站上有,可以看到分类的结构体。

https://blog.csdn.net/ochenmengo/article/details/104791008?spm=1001.2014.3001.5501

最后编译的分类的方法会覆盖掉之前的,倒序遍历的。
分类的同名方法会“覆盖“,原类方法仍然存在(返回了)
名字相同的分类会引起编译的报错

关联对象

https://blog.csdn.net/ochenmengo/article/details/104813322?spm=1001.2014.3001.5501

扩展

代理

通知(NS开头的,没有开放出来源码)

https://blog.csdn.net/ochenmengo/article/details/104902022?spm=1001.2014.3001.5501

KVO

  1. Key value observing
  2. 是Objective - C对观察者模式的又一个实现
  3. Apple 使用了isa混写(isa - swizzling)来实现KVO。

KVC

_key
_isKey
isKey
key

retain(MRC)/strong(ARC)
assign(ARC) / unsafe_unretained(基本退出舞台了)

*copy

*浅拷贝
对内存地址复制,没有开辟新内存,引用计数会+1

*深拷贝
开辟了新的内存空间,元内存的引用计数不会+1

*深浅拷贝
是否开辟了新的内存空间
引用计数是否会加1

retain修饰的属性怎么重写setter方法
简述分类实现原理?
KVO的实现原理?
能否为分类添加成员变量?

https://blog.csdn.net/ochenmengo/article/details/104905085?spm=1001.2014.3001.5501

上一篇下一篇

猜你喜欢

热点阅读