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.功能

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

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

代码就不写了  很简单

原文地址:https://www.cnblogs.com/gwkiOS/p/4944082.html