黑马程序员——OC语言Protocol(协议)
来源:互联网 发布:快手喊麦都用什么软件 编辑:程序博客网 时间:2024/05/16 11:15
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------
2.基本语法
3>如何遵守协议
(1)类遵守协议
@interface 类名:父类名 <协议名称1,协议名称2>
@end
(2)协议遵守协议。
@protocol 协议名 <协议1,协议2>
@end
3.基协议
(1)NSOBject是基协议,最根本最基本的协议。
(2)建议每个新协议都遵守基协议NSObject协议。
4.限制这个对象遵守协议
类名<协议名称> *变量名; eg:NSObject<myprotocol> *obj; // obj对象遵守myprotocol协议
id<协议名称> 变量名; eg:id<myprotocol> obj2;
0.概念
1>协议(Protoco)是一系列方法的列表,其声明的方法可以被任何类实现,一般称为代理模式。
2>在.h文件中@protocol声明存在协议,跟@class一样
1.作用:
1>可以声明很多方法,但是不能声明成员变量。
2>如果某个类遵守了某个协议,则这个类拥有协议中的所有方法声明。
3>如果父类遵守了某个协议,则子类也遵守了这个协议,
1>定义协议
// 定义一个协议,协议名称是myprotocol,NSObject是基协议,每个协议必须遵守
@protocol myprotoco <NSObject> - (void)test; // 声明test方法 - (void)test2; // 声明test2方法 @end
2>协议关键词
@required:要求方法必须实现,比实现就会发出警告,默认此
@required:要求方法必须实现,比实现就会发出警告,默认此
@optional: 不要求一定实现
eg:
@protocol myprotoco @required - (void)test; // 声明@required类型test方法,且要求此方法必须实现 @optional - (void)test2; // 声明@optional类型test2方法,不一定要求此方法实现 @end
3>如何遵守协议
(1)类遵守协议
@interface 类名:父类名 <协议名称1,协议名称2>
@end
eg:@interface Person : NSObject <protocol1,procotol2 > @end
(2)协议遵守协议。
@protocol 协议名 <协议1,协议2>
@end
3.基协议
(1)NSOBject是基协议,最根本最基本的协议。
(2)建议每个新协议都遵守基协议NSObject协议。
类名<协议名称> *变量名; eg:NSObject<myprotocol> *obj; // obj对象遵守myprotocol协议
id<协议名称> 变量名; eg:id<myprotocol> obj2;
eg:NSObject<myprotocol> *obj2 = [[Person alloc] init]; // 等号右边的Person类也必须遵守此协议,在Person类中需指定遵守此协议</span>
5.@property中声明的属性遵守协议
@property (nonatomic,strong) 类名<协议名称> *属性名
@property (nonatomic,strong) 类名<协议名称> *属性名
eg: @property(nonatomic,strong) Person<myprotocol> *p; // p属性遵守myprotocol这个协议</span>
@property (nonatomic,strong) id<协议名称> 属性名
6.协议可定义在单独的.h文件中,也可定义在某个类的.h文件中
(1)如果这个协议只能用于某个类,则此协议定义在此类的.h文件中
(1)如果这个协议只能用于某个类,则此协议定义在此类的.h文件中
eg:如果myprotocol1协议只用能在Person类中,则此 协议需要定义在Person类的.h文件中
(2)如果这个协议需要多个类使用,则此协议定义在单独的.h文件中
eg:如果myprotocol1协议要被多个类同时使用,则需要将此协议单独定义在协议的.h
7.分类可定义在单独.h和.m文件中,也可定义在原来类中
(1)一般定义在单独.h和.m文件中
(2)定义在原来类中的分类,只要求能看懂语法
(1)一般定义在单独.h和.m文件中
(2)定义在原来类中的分类,只要求能看懂语法
8.代理设计模式
定义:为其它对象提供一种代理以用来控制这个对象,我们不关心代理如何完成的,只关心代理有没有完成。
eg: 小明不想做饭,因此请了个保姆,但是请保姆需要签一份协议,保姆需要遵守协议。所以保姆就是代理,代理需要遵守某个协议。
条件:如果要成为代理,则必须遵守某个协议(协议用于声明方法,限制代理必须拥有某个方法)。
作用:可以监听某个方法是否被触发。
优点:耦合性较低,增加了代码的弹性。
eg:代理被删除了,但是Person还在。代理和对象之间互不影响。
9.总结
可以在某个文件中声明很多方法,方便多个类调用。
例如如果有很多类都需要某个方法,这样的话这些类都可以遵守这个协议,就不需要在每个类中编写相同的方法。提高了程序编写效率。
0 0
- 黑马程序员——OC语言Protocol(协议)
- 黑马程序员——OC语言的protocol协议
- 黑马程序员——OC语言中的协议protocol
- 黑马程序员——OC语言——protocol(协议)的概念及其使用
- 黑马程序员-OC语言协议Protocol
- 黑马程序员——OC基础---protocol(协议)
- 黑马程序员——OC语言学习——ARC机制、block代码块、protocol协议、protocol协议的应用
- 黑马程序员--OC--Protocol(协议)
- 15、黑马程序员-OC Protocol(协议)
- 黑马程序员——OC语言------Block、protocol协议、代理设计
- 黑马程序员—OC语言基础—Block类型与Protocol协议小结
- 黑马程序员——OC—block和protocol协议
- 黑马程序员——OC中的协议:protocol
- 黑马程序员——10、OC语言(block、protocol和代理模式)
- 黑马程序员——OC---protocol
- 黑马程序员——OC之protocol
- 黑马程序员------OC block(代码块)和protocol(协议)
- 黑马程序员员—OC(block和protocol)
- acdream 1427后缀数组
- 【kruskal+最小偏心距】wiki1700施工方案第二季
- 安卓简易闪光灯
- springmvc+ibatis配置环境
- eclipse导入项目出现乱码
- 黑马程序员——OC语言Protocol(协议)
- Ruby: How to find all indices of elements that match a given condition?
- github 一些实用的GitHub模式
- Android Call requires API level 11 (current min is 8)的解决方案
- GreenDAO+AndroidAnontations+TempRest协同开发
- 【摘要】图像文本检测提取算法
- 用C/C++语言实现贪吃蛇游戏
- 在网页中添加视频(HTML)
- log4j日志配置文件