个人读简书——简单知识总结(协议代理)

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。

上一篇 下一篇

猜你喜欢

热点阅读