OC基础回想(十二)协议
全部这些任务能够用最少的代码完毕。
1. 正式协议
但与非正式协议不同的是,正式协议须要显示地採用。採用(adopt)协议的办法是在类的@interface声明中列出协议的名称。採用协议后,你的类就要遵守该协议。採用协议就意味着你承诺实现该协议的全部方法。否则,编译器会生成警告来提醒你。
1.1 声明协议
@protocol myProtocol <NSObject>@required
-(void)protocolMethodA:(NSString *)string;
@optional
-(void)protocolMethodB:(NSString *)string;
@end
1.2 定义一个类遵循这个协议
@interface myClass <myProtocol>
@intrerface myClass : NSObject <myProtocol>
@interface myClass : NSObject <myProtocol, NSCoding>
2.为什么要使用正式协议
苹果的官方文档指出三个原因:
- To declare methods that others are expected to implement
- To declare the interface to an object while concealing its class
- To capture similarities among classes that are not hierarchically related
UIKit中设计了两个非常好的协议UITableViewDelegate,UITableViewDataSource来实现UITableViewController的控制。
不论什么遵循这两个协议的类都能够实现对UITableView的控制。
3.关于id类型的运用
这样的情况多用于代理模式的实现。比方某一个类有一个delegate 的property:
id <myProtocol> delegate;
更奇怪的是,当发送一个存在于myProtocol中的消息时,编译器居然没有这种警告信息。这两个測试并不能说明之前的解释是错误的,姑且觉得id<myProtocol> delegate这种写法是为了便于知道这个delegate遵循了myProtocol的协议吧
OC基础回想(十二)协议相关推荐
- 计算机基础函数运用,计算机应用基础第十二讲:EXCEL中函数的实际运用.doc
文档介绍: 计算机应用基础第十二讲:EXCEL中函数的实际运用.doc计算机应用基础第十二讲:EXCEL中函数的实际运用课 题EXCEL屮函数的实际运用课型多媒体课授课时间第20周教学目的实例分析,掌 ...
- python基础(十二):字符字节编码解码
基础(十二) 字符串概述 类型 编码架构 字符串存储 常用字符编码 ASCII latin-1 UTF-8(通用性更好) UTF-16 UTF-32 内置函数 ord() chr() str.enco ...
- 想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(十 二)
大家好,我是阿Ken.很快就要整理完第三章了~ 对于专升本_计算机文化基础我已经在博客里整理了已经一半多了,希望能够在我整理后能够帮助其他的小伙伴,这月底整理完所有的专升本_计算机文化基础的笔记,感兴 ...
- WiFi(Wireless Fidelity)基础(十二)
目录 一.基本介绍(Introduction) 二.进化发展(Evolution) 三.PHY帧((PHY Frame ) 四.MAC帧(MAC Frame ) 五.协议(Protocol) 六.安全 ...
- JavaSE基础笔记十二
第十一章 多线程 理解程序.进程.线程的概念 程序可以理解为静态的代码. 进程可以理解为执行中的程序. 线程可以理解为进程的近一步细分,程序的一条执行路径. 2.如何创建java程序的进程(重点) 方 ...
- Go语言基础(十二):并发编程
文章目录 一.前言 二.goroutine 1.使用goroutine 2.启动goroutine示例 3.main优雅谢幕(sync.WaitGroup) 三.goroutine与线程 1.可增长的 ...
- RHEL6基础四十二之RHEL文件共享①NFS
NFS(Network File System的缩写,即网络文件系统),依赖于RPC协议 (Remote Procedure Cal的缩写,即远程过程调用) 实现文件或信息传送,只要用到NFS的地方都 ...
- 网络安全基础(十二)
1.什么叫证书链? 正确答案: 答:证书链由不同证书颁发机构(CA)创建的证书序列组成,其中每个连续的证书都是由一个CA颁发的证书,用于证明链中下一个CA的公钥. 2.怎样撤销X.509证书? 正确答 ...
- MFC入门基础(十二)控件 CScrollBar的使用
1.参考博客: VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)-软件开发-鸡啄米 以下内容是参考上述博客大神的稍作修改 2. 首先还是创建一个基于对话框的MFC工程 ...
最新文章
- Linux高负载下优化MYSQL(一)
- ldconfig与 /etc/ld.so.conf
- jni java共享变量_Android JNI开发系列(十)JNI访问 Java 实例变量和静态变量
- 技术玩法大升级,网易MCtalk揭秘5G即时通讯技术背后的秘密
- idea2018.3.5集成scala开发环境
- java 释放指针_C库释放来自Rust的指针
- 比乐高还要好玩,50种奇妙装置玩法,将STEM教育一网打尽
- Kotlin学习笔记21 协程part1 基本概念
- stm32f103c8t6最小系统电路原理图_嵌入式单片机之STM32F103C8T6最小系统板电路设计参考...
- window下安装好postgreSQL 9.3用cmd命令进入数据库(搞的我这个菜鸟只剩半条命)...
- [每日一题] OCP1z0-047 :2013-07-12 多表插入
- php框架原理 php初识,初识PHP
- 从随机数生成到随机采样的C++实现
- oracle启动数据库错误
- java 8 sdk官方下载_Java SDK下载方法
- 2022年申请亳州市发明专利材料,专利说明书摘要写作技巧
- 数字ic设计——SPI
- Cors跨域(一):深入理解跨域请求概念及其根因
- 在go mod中使用k8s.io/code-generator生成代码
- 从这 5 个场景 , 看 MPC 多方安全计算的行业应用
热门文章
- 非常详细的测试unity与android之间的通讯操作
- 一帖搞定U盘系统制作及安装苹果mac os引导U盘安装windows7
- “变态级”系统管理员笔试题,你能拿下吗?
- rancher中级(二)(rancher中添加证书及操作虚拟主机)
- 那些不能错过的Xcode插件
- UVa 10055 - Hashmat the Brave Warrior
- 一天一个shell实例(3)定时备份文件(转)
- MySQL 5.5 的COMPRESSED INNODB 表
- C#方法参数传递-同时使用ref和out关键字
- 技术转载:八款开源 Android 游戏引擎 (巨好的资源)