iOS OC

1.你用分类做了哪些事情?

声明私有方法    分解体积庞大的类   把framework私有方法公开化

2.分类的特点?

运行时决议(扩展是编译)  可以为系统类添加分类  分类添加的方法可以“覆盖”原类方法

3.分类可以添加哪些内容?

实例方法  类方法  协议  属性(get方法set方法  添加实例变量需要通过关联技术)

4.分类结构体watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW8yMjE4ODk3,size_16,color_FFFFFF,t_70

5.分类加载调用栈

_objc_init --(map-2-images --- map_images_nolock (内存镜像处理))--- -read_images(读取镜像) --- remethodizeClass

6.关联对象

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW8yMjE4ODk3,size_16,color_FFFFFF,t_70

7.关联对象的本质:(并不是在宿主类上面)

关联对象由AssociationsManager管理并在AssociationsHashMap存储,所有对象的管理内容都在同一个全局容器中

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW8yMjE4ODk3,size_16,color_FFFFFF,t_70

8.一般用扩展做什么?

声音私有属性 声明私有方法 声明私有成员变量   

特点:编译时决议  只以声明的形式存在,多数情况下寄生于宿主类的.m中,不能为系统类添加扩展

9.如何实现通知机制

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW8yMjE4ODk3,size_16,color_FFFFFF,t_70

10.KVO

key-value-observing   观察者设计模式的另外一种实现  isa(isa-swizzling)混写来实现KVO 

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW8yMjE4ODk3,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW8yMjE4ODk3,size_16,color_FFFFFF,t_70

手动kvo:willchangevalueforkey  _value +=1 didchangevalueforkey  (系统也是这么实现的)

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW8yMjE4ODk3,size_16,color_FFFFFF,t_70

11.kvc (key-value coding 键值编码技术)

-(id)valueforkey:(nsstring *)key    -(void)setValue:(id)value forkey:(nsstring *)key

key是相似值(比如:_key _isKey key isKey)  访问器方法也是相似(比如:getKey  key isKey) 实现逻辑如下:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW8yMjE4ODk3,size_16,color_FFFFFF,t_70

12.copy

只有copy修饰不可变对象的时候是浅拷贝,其它都是深拷贝

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值