协议

作者: 一直很安静_25ae | 来源:发表于2019-06-03 11:58 被阅读0次

1>协议的定义

@protocol 协议名称 <NSObject>

//方法的声明列表

@end

2>如何遵守协议

1>类遵守协议

@interfacce 类名:父类<协议名称1,协议名称2.....>

@end

2>协议遵守协议

@protocol 协议名称<其他协议名称1,其他协议名称2>

@end

3>协议中声明的关键字

1>@required(默认)

要求必须实现,如果没有实现,就会发出警告

2>@optional

不要求必须实现,怎么样都不会有警告

4>定义一个变量名称的时候,限制这个变量保存的对象遵守某个协议

类名<协议名称>*变量名

NSObject<MyDelegate> *objc

id<协议名称>变量名

id<MyDelegate> objc

5>简单应用

要求:

一个人需要一个app,这个app必须有学习、买东西、分享等功能

处理思路:

1、需要创建一个人和APP

2、需要创建一个Protocol来描述这些功能

3、人拥有的APP要实现这些功能

4、APP需要遵循这个Protocol且实现它

//>>>声明一个协议 DoSomethingProtocol.h文件

#import<Foundation/Foundation.h>

@protocol DoSomethingProtocol <NSObject>

- (void)buySomething;

- (void)studyEnglish;

- (void)shareInfo;

@end

//APP.h文件

#import<Foundation/Foundation.h>

#import"DoSomethingProtocol.h"

@interface   APP : NSObject<DoSomethingProtocol>

@end

//APP.m文件

#import"APP.h"

@implementation APP

- (void)buySomething {

NSLog(@"%s",__func__);

}

- (void)shareInfo {

NSLog(@"%s",__func__);

}

- (void)studyEnglish {

NSLog(@"%s",__func__);

}

@end

//Person.h文件

#import<Foundation/Foundation.h>

#import  "DoSomethingProtocol.h"

@interface   Person : NSObject

// 拥有一个代理属性 

// id代表代理的类名随便

 // 但必须遵守TicketDelegate协议

@property(nonatomic,strong) id <DoSomethingProtocol> delegate;

@end

//Person.m文件

Person *p = [[Person alloc]init];

p.delegate = self;

//判断app是否有实现协议内容

if([p.delegate respondsToSelector:@selector(buySomething)]){ 

 [p.app buySomething];

}

if([p.delegate respondsToSelector:@selector(studyEnglish)]) {

 [p.app studyEnglish];

}

if([p.delegate respondsToSelector:@selector(shareInfo)]) {

 [p.app shareInfo];

}

相关文章

  • git协议

    git支持的协议 local协议 https协议 ssh协议 git协议 github常用的协议

  • Dubbo服务 上传文件解决方案以及Hessian协议

    协议支持Dubbo支持多种协议,如下所示: Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebS...

  • Procotol 和 Delegate

    目录 Procotol 协议的概念 协议的分类 协议的定义 协议的遵循 协议的方法 协议的属性 Delegate ...

  • 计算机网络题目

    几种协议分别属于哪一层传输层协议:TCP协议、UDP协议应用层协议:FTP、HTTP、SMTP网络层协议:IP协议...

  • ARP协议

    地址解析协议ARP 网络层四大协议:ARP协议,IP协议,ICMP协议,IGMP协议。 ARP(Address R...

  • IP数据报格式

    前言 先回顾一下TCP/IP协议栈 网络层的协议有IP协议、ARP协议、ICMP协议和IGMP协议。其中IP协议是...

  • 名词解析

    网络层:IP协议 : 网络协议ICMP协议: Internet互联网控制报文协议 ->IP协议的附属协议 IP...

  • 如何将Git仓库备份到本地

    git常用的传输协议传输协议.png哑协议:哑协议传输进度不可见;智能协议传输可见。传输速度:智能协议比哑协议传输...

  • NSURLSession学习笔记

    �Http协议-超文本传输协议 Http协议是应用层协议,底层要求的传输协议必须是可靠的传输协议,通常是TCP协议...

  • dubbo支持的7种协议 (1)

    支持的协议有哪些。 1、dubbo 协议 (默认) 2、rmi 协议 3、hessian 协议 4、http 协议...

网友评论

      本文标题:协议

      本文链接:https://www.haomeiwen.com/subject/ymixxctx.html