2019独角兽企业重金招聘Python工程师标准>>>

##一、 简单使用 ###1. 基本用途

  • 可以用来声明一大堆方法(不能声明成员变量)
  • 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明
  • 只要父类遵守了某个协议,就相当于子类也遵守了

###2. 格式

  • 协议的编写
@protocol 协议名称
// 方法声明列表
@end
某个类遵守协议
@interface 类名 : 父类 <协议名称>
@end

###3. 关键字

  • 协议中有2个关键字可以控制方法是否要实现(默认是@required),在大多数情况下,用途在于程序员之间的交流

    • @required:这个方法必须要实现(若不实现,编译器会发出警告)
    • @optional:这个方法不一定要实现

###4. 协议遵守协议

  • 一个协议可以遵守其他多个协议,多个协议之间用逗号 , 隔开
  • 一个协议遵守了其他协议,就相当于拥有了其他协议中的方法声明
@protocol 协议名称 <协议1, 协议2>
@end

###5. 基协议

  • NSObject是一个基类,最根本最基本的类,任何其他类最终都要继承它
  • 其实还有一个协议,名字也叫NSObject,它是一个基协议,最根本最基本的协议
  • NSObject协议中声明很多最基本的方法,比如descriptionretainrelease
  • 建议每个新的协议都要遵守NSObject协议

###6. 定义变量时指定协议

// NSObject类型的对象,并且要遵守NSCopying协议
NSObject<NSCopying> *obj;
// 任何OC对象,并且要遵守NSCoding协议
id<NSCoding> obj2;

##二、 代理设计模式 ###1. 设计原理

有些麻烦的事情不想自己亲自做,就可以找个人帮忙做,即交给代理对象去做

###2. 设计原则

  • 首先得拥有某个代理对象属性
  • 其次要很清楚代理有哪些方法
  • 最后要保证能解耦

###3. 实现方案

  • 定义一个protocol,在其中声明一些和代理沟通的方法
  • 拥有一个代理属性id<protocol> delegate
  • 让代理遵守protocol

转载于:https://my.oschina.net/wecnlove/blog/552850

04 - Object-C协议与代理设计相关推荐

  1. swift 用协议实现代理传值功能

    2019独角兽企业重金招聘Python工程师标准>>> swift 用协议实现代理传值功能 原文  http://blog.csdn.net/whzhaochao/article/d ...

  2. 静态代理设计与动态代理设计

    静态代理设计模式 代理设计模式最本质的特质:一个真实业务主题只完成核心操作,而所有与之辅助的功能都由代理类来完成. 例如,在进行数据库更新的过程之中,事务处理必须起作用,所以此时就可以编写代理设计模式 ...

  3. C++模拟实现Objective-C协议和代理模式

    Objective-C的协议和代理是运用最多的特性之一,可以说在苹果系列开发中无处不在.事实上很多人都不知道其背后的原理.事实上简单点说,这就是设计模式中的代理模式的经典运用.代理模式简单点说就是为其 ...

  4. 设置git协议clone代理

    0x0 最近在clone yaffs2仓库时发现clone的异常缓慢,就算开了代理也是,搜索一番发现网上大多都是将设置http.https.ssh协议的代理,对于git协定的代理讲的很少,下面分享下如 ...

  5. iOS开发篇——OC 协议和代理设计模式介绍

    蓝鸥iOS培训讲师推荐:好久没和大家沟通了,没和大家沟通了,今天就和大家说说有关OC内容协议和代理设计模式.首先要讲的是协议 一.协议 OC中的协议和接口有些相似,协议中定义的方法,在类中实现.协议一 ...

  6. 04 TCP/IP协议详解

    目录 章节目标 4.1 概述 1.为什么会有TCP/IP协议 2.介绍 4.2 TCP/IP协议族 4.2.1 TCP/IP协议栈 1.协议的分层 2. 主机与主机之间通信的三要素 3.应用层 4.传 ...

  7. windows Nginx WebSocket ws协议反向代理

    Nginx WebSocket ws协议反向代理 正常连接WebSocket 使用Nginx反向代理 正常连接WebSocket 未使用nginx反向代理 var ws = new WebSocket ...

  8. 热水bot协议_如何设计Bot协议

    热水bot协议 by Alex Bunardzic 由Alex Bunardzic 如何设计Bot协议 (How to Design a Bot Protocol) One of the bigges ...

  9. 简单的协议应用-代理模式

    协议(protocol): <> 遵守某个协议,只要遵守了这个协议,相当于拥有协议里面的所有方法声明 声明一系列方法 编译器不强求实现协议里所有的方法 分类和协议都只能声明方法,不能声明成 ...

最新文章

  1. 2022-2028年中国离心机行业市场研究及前瞻分析报告
  2. 遍历目录寻找指定文件
  3. 【system generator】基于system generator的根号运算系统实现
  4. Myeclipse快捷键总结大全
  5. DirectX - dds图片格式(DDSURFACEDESC2)
  6. DELL MD3200I存储单双控制器的自由切换
  7. Git本地版本控制备忘
  8. Java POJO Bean 对象与 Web Form 表单的自动装配
  9. hdu 2570 (贪心)
  10. Atitit 搜索蓝牙设备 powershell的实现 java noede.js python 先用脚本语言python nodejs,不好实现。。Java 也不好实现。。 Netcore可以,
  11. 如何实现Windows 和 Linux 共享文件夹
  12. [知了堂学习笔记]_Ajax之解析Json
  13. python获取图片曲线数据_从图片中提取曲线坐标数据
  14. 制作目标在背景中具有移动效果的视频
  15. Urchin再包装 Google提供免费网络流量分析工具(zz)
  16. 源来是你-Vol.38 | 浪潮开务数据库招人辣!准备好加入幸福感爆棚的KW家族了么?...
  17. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作
  18. fortigate防火墙虚拟机版本的使用
  19. Flutter Ticker类的用法
  20. ie兼容模式下跨域访问问题的解决

热门文章

  1. 老牛:虚拟化让工作如此智慧
  2. S/4HANA中的销售计划管理
  3. 1.Spring Boot --hello world
  4. 软件外包项目管理的经验感悟
  5. SAE上传web应用(包括使用数据库)教程详解及问题解惑
  6. Oracle alter table详解
  7. JavaScript eval
  8. html中表格自动换行
  9. ArcSDE 9.1 for Oracle10g on Solaris 10
  10. 45. GameProject9+输入检测