个人读简书——简单知识总结(协议代理)
2016-11-17 本文已影响21人
傻傻小萝卜
1.协议和代理的区别
<1>协议不是对象,是OC的一种语法,用于声明一组方法,约定调用者可以使用实现者的那些方法
协议不能被单独实例化,只能由类来明文声明,并具体实现。
协议的使用:
(1)指定对象需要实现的方法(必须的和非必须的)
(2)调用时,先判断被调用者是否实现了某个方法
if([self.delegate respondsToSelector:@selector(textColorChanged:)])
{ [self.delegatetextColorChanged:self.textColor];
}
<2>代理:是A对象指定B对象处理某些特定任务的设计模式,这里的B对象就成为A对象的代理
在OC中协议是实现代理模式的一种方式
协议提供了面向接口编程的一种方式,使用协议,调用者只需要关心被调用者是否能做某些事,而不关心被调用者具体是谁。
这就是为什么代理对象总是被声明成id,也就是说,只要实现了协议,任何类都可以成为代理。
<3>小结
协议是Objective-C 的一种语法,声明了一套方法,而代理是一种设计模式,可以用协议来实现。
使用协议要注意三个问题:
指定对象需要实现的方法。
调用时,先判断被调用者是否实现某方法。
声明为代理的属性,需要定义为 weak。