Objective-C协议初识

 1 #import <Foundation/Foundation.h>
 2 #import "IOSProgrammer.h"
 3 #import "JavaCodingMonkey.h"
 4 int main(int argc, const char * argv[]) {
 5     @autoreleasepool {
 6         JavaCodingMonkey * javaCodingMokey = [[JavaCodingMonkey alloc] init];
 7         [javaCodingMokey writeJavaCode];
 8
 9         IOSProgrammer * iOSProgrammer = [[IOSProgrammer alloc] init];
10         [iOSProgrammer sleep];
11         [iOSProgrammer sing];
12         [iOSProgrammer playGame];
13         [iOSProgrammer writeIOSCode];
14
15         id<IOSProgrammerProtocol> staff = iOSProgrammer;
16         [staff writeIOSCode];
17
18         id<IOSProgrammerProtocol> staff2 = javaCodingMokey;
19         [staff2 writeIOSCode];
20
21         // id 类型的指针 遵守协议后 只能调用协议中的方法
22
23
24     }
25     return 0;
26 }

main.m

1 #import <Foundation/Foundation.h>
2 // @protocol 协议的名字 <NSObject>
3 @protocol IOSProgrammerProtocol <NSObject>
4 @required // 必须要实现的方法 默认 不实现会有警告
5 - (void)writeIOSCode;
6 @optional // 可选的方法 可以实现也可以不实现
7 - (void)playTaiji;
8 @end

IOSProgrammerProtocol.h

1 #import <Foundation/Foundation.h>
2 #import "IOSProgrammerProtocol.h"
3 @interface JavaCodingMonkey : NSObject<IOSProgrammerProtocol>
4 - (void)writeJavaCode;
5 @end

JavaCodingMonkey.h

 1 #import "JavaCodingMonkey.h"
 2
 3 @implementation JavaCodingMonkey
 4 - (void)writeJavaCode {
 5     NSLog(@"write Java Code");
 6 }
 7
 8 - (void)writeIOSCode {
 9     NSLog(@"write ISO code");
10 }
11 @end

JavaCodingMonkey.m

1 #import <Foundation/Foundation.h>
2 #import "IOSProgrammerProtocol.h"
3
4 @interface IOSProgrammer : NSObject<IOSProgrammerProtocol>
5 - (void)sing;
6 - (void)sleep;
7 - (void)playGame;
8 @end

IOSProgrammer.h

 1 #import "IOSProgrammer.h"
 2
 3 @implementation IOSProgrammer
 4 - (void)sing {
 5     NSLog(@"唱了一首 会喷火葫芦娃");
 6 }
 7
 8 - (void)sleep {
 9     NSLog(@"好好的休息了一下");
10 }
11
12 - (void)playGame {
13     NSLog(@"玩了一局英雄联盟");
14 }
15
16 - (void)writeIOSCode {
17     NSLog(@"write iOS code");
18 }
19 @end

iOSProgrammer.m

三、协议的应用与功能

a.应用

1.(主要功能)规范接口(协议规范接口是强制的)

2.   实现委托代理机制(实现对象之间的通信)  代理设计模式

b.功能

  • 协议就是为了满足统一的数据传输
  • 一个类只能继承一个直接的父类,但可以实现多个接口(遵守多个协议),间接的实现了多继承.

用协议实现多继承  可定义多个协议   类遵守多个协议   实现协议中的方法 间接实现多继承

代码就不写了  很简单

时间: 2024-08-08 04:31:59

Objective-C协议初识的相关文章

Objective C协议

协议类似于Java中的接口或者C++中的纯虚类,只有接口部分而没有实现部分只定义了方法的声明部分而没有实现部分.关键字为@protocol,协议可以继承别的协议,协议可以有多个用逗号分隔<p1 ,p2>.协议中不能有成员变量. @protocol MyProtocol <NSObject> -(void) read; -(void)write; @end</span> 定义一个MyProtocol协议继承自NSObject协议,我们也可以使用预编译指令@required

ARP(Address Resolution Protocol)地址解析协议初识

ARP址解析协议是根据IP地址获取物理地址的一个TCP/IP协议.它工作在OSI七层模型的中第二层--数据链路层. 使用ARP地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行. 可能会受到恶意攻击--ARP欺骗 与IPV6的NDP协议相比,ARP使用广播的效率偏低. ARP是通过报文工作的,报文的结构如下图所示: 假设同一个网络中的主机A要与主机B进行通信,A和B的信息如下: 主机A的IP地址为192.168.1.1,MAC地址为

HTTP/1.1协议初识

http协议 * 即超文本传输协议.它规定了浏览器与服务器之间的通讯规则. * http是基于请求/响应模式的,所以分为请求协议和响应协议 =================================== 请求 请求内容就是客户端发送给服务器的数据! 1. 请求格式: * 请求首行 * 请求头 * 空行 * 请求体(或称之为请求正文) 2. 请求方法 * 常见请求方法有GET和POST * 在浏览器地址栏中发送请求,以及点击超链接都是GET请求 * 提交表单可以发送GET请求,以及POST

SSL与SSH协议初识

SSL和SSH协议 加密类型 对称加密 加密与解密使用相同的秘钥,如:DES.3DES.AES等 优点:算法公开.加密速度快,效率高 缺点:秘钥分发较为复杂,管理困难,不能够实现数字签名 非对称加密 加.解密时使用成对的公钥(publickey)与私钥(privatekey)来完成,公钥是公开的,私钥由用户自行保存,公钥由私钥生成,无法由公钥逆向推导出私钥,如:RSA.DSA.Elgamal等 发送发使用接收方的公钥加密,接受方需要使用自己的私钥进行解密,保证数据的私密性 发送方使用自身私钥加密

TCP/IP网络协议初识

目录 一.什么是协议? 二.什么是TCP/IP协议? 三.TCP/IP为什么这么多协议? 四.TCP/IP协议为什么分层? 五.TCP/IP协议如何入门? 六.TCP/IP 的分层: 七.各协议层打包和拆包过程: 八.浏览器访问网页的整个流程: 九.举例:网上购物的请求流程 一.什么是协议? 协议就是两个或多个对象之间为了某个或多个需求而设置的约定,即在什么时间,遇到什么情况该做什么. 举例: 小强和小明约定周末一起去玩小霸王游戏机,但是如果遇上停电就去掏鸟窝. 二.什么是TCP/IP协议? T

objective C中继承、协议、分类和多态的实现

第一.objective C中继承的实现 在oc中只有实例变量会有权限控制,实例方法和类方法是没有权限控制的,这点与c++不同,OC默认的是protected,并且在声明权限控制时,没有分号 在OC中可以像C++一样用指针运算法来访问实例变量 Rectangle.h 文件代码: #import <Foundation/Foundation.h> @interface Rectangle : NSObject { int _width; int _height; } @property (non

web框架简介, 以及 HTTP协议初步了解

一, web框架的本质: 所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了 ################## # # # # # socket服务端 # # # # # ################## import socket sk = socket.socket() sk.bind(("127.0.0.1", 80)) sk.listen() while True: conn, addr =

ios消息的交互方式

注意这些都是界面回传(即从第二个界面传到第一个界面,从第一个界面传到第二个界面的时候用第二个界面的属性即可) iOS消息的交互方式有4种,分别为:通知,代理,block,kvo 现在我们对这个4中方式分别做详细的介绍 通知 //1通知的发送平台(信息的发布者) [[NSNotificationCenter defaultCenter] postNotificationName:@"enterTicket" object:nil userInfo:@{@"index"

计算机网络 0.初识Internet与TCP/IP协议

互联网,即因特网,Internet.互联网是一个世界范围的计算机网络.连接了世界上无数的计算设备,这些计算设备为PC,基于Linux的工作站,服务器servers等等.这些设备根据其作用不同可以被称为主机host或者端系统end system. 端系统通过通信链路communication link和分组交换机packet switch连接到一起.发送数据时,发送端系统将数据分段,并为每段加上首部字节.这样的形成的信息包称为分组packet.分组到达目标端系统后,被装配成初始数据.分组交换机从它