类目(Category)又叫类别:为封装类添加额外的方法,对现有类扩展设计模式
类目定义的方法会成为原始类的一部分,子类能够继承已经添加类目的父类的全部方法,但父类不能拥有子类的类目方法,类目不继承原始类,只兼容和扩展原始类ui
没法向类目中添加新的实例变量,只能经过子类添加;若是在类目中覆盖现有类方法,会引发super 消息的断裂,由于类目方法更高的优先级,所以通常不要覆盖现有类方法spa
延展(Extension)“匿名”的类目,延展定义类的私有方法,通常是在类的实现文件@implementation之上定义如:Person() 和类目的区别在于括号里面是空的,没有名字的,暂时性的存在,只能本类调用方法,子类也没法调用父类的延展设计
另外在本类的实现文件@implementation之上也能够定义私有方法,私有的静态变量代理
延展的特色就是定义私有方法orm
协议(Protocol)没有父类也不能定义实例变量,只声明方法,声明未知类的接口,两个类之间的通讯对象
@required :必须实现。默认继承
@optional :选择性的实现接口
NSObject为基本类根类也为基协议,能够写也能够不写事件
代理设计模式:两个对象协同解决难题,用于对象之间的通讯
通常用于控件和控制器对象之间的通讯,控件事件发生要经过控制器行为表现
就是说该对象类有委托方法,实现委托方法(遵照委托协议)须要在其余类中实现,经过其余类对象来代理解决