扩展
Q:我们一般用扩展做什么?
A:声明私有属性,声明私有方法(没什么意义),声明私有成员变量
Q:扩展的特点
A:编译时决议,只能以声明的形式存在,多数情况下寄生在宿主类的.m中,不能为系统类添加扩展。
扩展注意:类扩展得到的属性和方法,都是私有的!在外界中无法直接使用,即无法直接get后者set到这些成员。但是可以在.h里提供方法接口来改变这些私有属性的情况。
代理
代理是一种设计模式,以@protocol形式体现,一般是一对一传递。一般以weak关键词以规避循环引用。
Q:代理的组成?
A:代理对象、委托者、协议三部分组成。
协议:用来指定代理双方可以做什么,必须做什么。
代理:根据指定的协议,完成委托方需要实现的功能。
委托:根据指定的协议,指定代理去完成什么功能。
Q:为什么我们设置代理属性都使用weak呢?
A:我们定义的指针默认都是__strong类型的,而属性本质上也是一个成员变量和set、get方法构成的,strong类型的指针会造成强引用,必定会影响一个对象的生命周期,这也就会形成循环引用。
网友评论