04 - Object-C协议与代理设计
2019独角兽企业重金招聘Python工程师标准>>>
##一、 简单使用 ###1. 基本用途
- 可以用来声明一大堆方法(不能声明成员变量)
- 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明
- 只要父类遵守了某个协议,就相当于子类也遵守了
###2. 格式
- 协议的编写
@protocol 协议名称
// 方法声明列表
@end
某个类遵守协议
@interface 类名 : 父类 <协议名称>
@end
###3. 关键字
- 协议中有2个关键字可以控制方法是否要实现(默认是
@required
),在大多数情况下,用途在于程序员之间的交流@required
:这个方法必须要实现(若不实现,编译器会发出警告)@optional
:这个方法不一定要实现
###4. 协议遵守协议
- 一个协议可以遵守其他多个协议,多个协议之间用逗号 , 隔开
- 一个协议遵守了其他协议,就相当于拥有了其他协议中的方法声明
@protocol 协议名称 <协议1, 协议2>
@end
###5. 基协议
NSObject
是一个基类,最根本最基本的类,任何其他类最终都要继承它- 其实还有一个协议,名字也叫
NSObject
,它是一个基协议,最根本最基本的协议 NSObject
协议中声明很多最基本的方法,比如description
、retain
、release
等- 建议每个新的协议都要遵守
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协议与代理设计相关推荐
- swift 用协议实现代理传值功能
2019独角兽企业重金招聘Python工程师标准>>> swift 用协议实现代理传值功能 原文 http://blog.csdn.net/whzhaochao/article/d ...
- 静态代理设计与动态代理设计
静态代理设计模式 代理设计模式最本质的特质:一个真实业务主题只完成核心操作,而所有与之辅助的功能都由代理类来完成. 例如,在进行数据库更新的过程之中,事务处理必须起作用,所以此时就可以编写代理设计模式 ...
- C++模拟实现Objective-C协议和代理模式
Objective-C的协议和代理是运用最多的特性之一,可以说在苹果系列开发中无处不在.事实上很多人都不知道其背后的原理.事实上简单点说,这就是设计模式中的代理模式的经典运用.代理模式简单点说就是为其 ...
- 设置git协议clone代理
0x0 最近在clone yaffs2仓库时发现clone的异常缓慢,就算开了代理也是,搜索一番发现网上大多都是将设置http.https.ssh协议的代理,对于git协定的代理讲的很少,下面分享下如 ...
- iOS开发篇——OC 协议和代理设计模式介绍
蓝鸥iOS培训讲师推荐:好久没和大家沟通了,没和大家沟通了,今天就和大家说说有关OC内容协议和代理设计模式.首先要讲的是协议 一.协议 OC中的协议和接口有些相似,协议中定义的方法,在类中实现.协议一 ...
- 04 TCP/IP协议详解
目录 章节目标 4.1 概述 1.为什么会有TCP/IP协议 2.介绍 4.2 TCP/IP协议族 4.2.1 TCP/IP协议栈 1.协议的分层 2. 主机与主机之间通信的三要素 3.应用层 4.传 ...
- windows Nginx WebSocket ws协议反向代理
Nginx WebSocket ws协议反向代理 正常连接WebSocket 使用Nginx反向代理 正常连接WebSocket 未使用nginx反向代理 var ws = new WebSocket ...
- 热水bot协议_如何设计Bot协议
热水bot协议 by Alex Bunardzic 由Alex Bunardzic 如何设计Bot协议 (How to Design a Bot Protocol) One of the bigges ...
- 简单的协议应用-代理模式
协议(protocol): <> 遵守某个协议,只要遵守了这个协议,相当于拥有协议里面的所有方法声明 声明一系列方法 编译器不强求实现协议里所有的方法 分类和协议都只能声明方法,不能声明成 ...
最新文章
- 2022-2028年中国离心机行业市场研究及前瞻分析报告
- 遍历目录寻找指定文件
- 【system generator】基于system generator的根号运算系统实现
- Myeclipse快捷键总结大全
- DirectX - dds图片格式(DDSURFACEDESC2)
- DELL MD3200I存储单双控制器的自由切换
- Git本地版本控制备忘
- Java POJO Bean 对象与 Web Form 表单的自动装配
- hdu 2570 (贪心)
- Atitit 搜索蓝牙设备 powershell的实现 java noede.js python 先用脚本语言python nodejs,不好实现。。Java 也不好实现。。 Netcore可以,
- 如何实现Windows 和 Linux 共享文件夹
- [知了堂学习笔记]_Ajax之解析Json
- python获取图片曲线数据_从图片中提取曲线坐标数据
- 制作目标在背景中具有移动效果的视频
- Urchin再包装 Google提供免费网络流量分析工具(zz)
- 源来是你-Vol.38 | 浪潮开务数据库招人辣!准备好加入幸福感爆棚的KW家族了么?...
- django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作
- fortigate防火墙虚拟机版本的使用
- Flutter Ticker类的用法
- ie兼容模式下跨域访问问题的解决