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