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

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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,896评论 0 9
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,463评论 30 472
  • 1. 使用 #import 相对c的 include 是防止头文件的重复导入 2. NSLog 相对于 print...
    迎风起飞的猪阅读 5,869评论 6 9
  • 一、深复制和浅复制的区别? 1、浅复制:只是复制了指向对象的指针,即两个指针指向同一块内存单元!而不复制指向对象的...
    iOS_Alex阅读 5,314评论 1 27
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,494评论 1 10

友情链接更多精彩内容