黑马程序员——有关protocol的小结
2015-03-18 14:03
190 查看
在OC程序中经常会有这样的问题就是一个类想让其他类帮自己实现某些方法,然后再将结果返回给这个类;如何让一个类要找的代理去实现自己想要的方法呢?
这样就需要有一个协议,让能遵守协议的其他类都能实现协议中的方法声明,成为该类的代理。
protocol的使用原则:
1.可以用来声明很多方法,但是不能声明成员变量。
2.只要一个类遵守了这个协议,就相当于拥有了这个协议中所有的方法声明,然后在自己的.m文件中实现就行了。
3.只要父类遵守了这个协议,就相当于子类也遵守了这个协议。
protocol的使用方法:
一、协议的定义
@protocol 协议名<NSObject>
//方法声明
@end
二、如何遵守协议
1.类遵守协议
@interface 类名:父类名<协议1,协议2,……>
@end
2.协议遵守协议
@protocol 协议名 <协议1,协议2,……>
@end
三、协议中方法声明的关键字
1.@required(默认),这个是默认要求去实现的,不实现会有警告。
2.@optional这个是可以先实现也可以选择不实现。
一般情况下这两个关键字是用于程序员之间的交流,声明哪些方法可以不实现哪些方法要去实现。
四、在定义一个变量时,可以限制这个变量保存的对象遵守某个协议
类名<协议名>*变量名; 如Person<protocol1>*p=[[Person alloc]init]; 要求p保存的对象Person必须遵守protocol1协议。
id<协议名>变量名; 如id<protocol1>obj;
五、@property中声明的属性也可以做一个遵守协议的限制。
@property (nonatomic ,strong) 类名<协议名>变量名; 如@property (nonatomic,strong) Person<protocol1>*p1;
六、协议不仅可以定义在单独的.h文件中也可以定义在一个类的声明中。
即若协议内容公用就要定义在单独的.h文件中方便使用。
七、协议的提前声明
和类的提前声明“@class 类名”的方式类似,协议的提前声明可以用“@protocol 协议名”的方式进行提前声明,些声明只是纯粹性的声明,若需要协议中的方法还需要用
#import "协议头文件"方式获取其中的方法声明。
如:@protocol Myprotocol; #import "Myprotocol.h"
关于protocol 理论知道我只学了这么多,日后的学习中再进行补充吧。
http://www.itheima.com/
这样就需要有一个协议,让能遵守协议的其他类都能实现协议中的方法声明,成为该类的代理。
protocol的使用原则:
1.可以用来声明很多方法,但是不能声明成员变量。
2.只要一个类遵守了这个协议,就相当于拥有了这个协议中所有的方法声明,然后在自己的.m文件中实现就行了。
3.只要父类遵守了这个协议,就相当于子类也遵守了这个协议。
protocol的使用方法:
一、协议的定义
@protocol 协议名<NSObject>
//方法声明
@end
二、如何遵守协议
1.类遵守协议
@interface 类名:父类名<协议1,协议2,……>
@end
2.协议遵守协议
@protocol 协议名 <协议1,协议2,……>
@end
三、协议中方法声明的关键字
1.@required(默认),这个是默认要求去实现的,不实现会有警告。
2.@optional这个是可以先实现也可以选择不实现。
一般情况下这两个关键字是用于程序员之间的交流,声明哪些方法可以不实现哪些方法要去实现。
四、在定义一个变量时,可以限制这个变量保存的对象遵守某个协议
类名<协议名>*变量名; 如Person<protocol1>*p=[[Person alloc]init]; 要求p保存的对象Person必须遵守protocol1协议。
id<协议名>变量名; 如id<protocol1>obj;
五、@property中声明的属性也可以做一个遵守协议的限制。
@property (nonatomic ,strong) 类名<协议名>变量名; 如@property (nonatomic,strong) Person<protocol1>*p1;
六、协议不仅可以定义在单独的.h文件中也可以定义在一个类的声明中。
即若协议内容公用就要定义在单独的.h文件中方便使用。
七、协议的提前声明
和类的提前声明“@class 类名”的方式类似,协议的提前声明可以用“@protocol 协议名”的方式进行提前声明,些声明只是纯粹性的声明,若需要协议中的方法还需要用
#import "协议头文件"方式获取其中的方法声明。
如:@protocol Myprotocol; #import "Myprotocol.h"
关于protocol 理论知道我只学了这么多,日后的学习中再进行补充吧。
http://www.itheima.com/
相关文章推荐
- 黑马程序员——OC学习小结------arc,block,protocol(协议)
- 黑马程序员——block和protocol小结
- 黑马程序员——有关protocol代理模式的举例说明
- [小结]有关GetPrivateProfileString的使用方法
- 黑马程序员—out和ref的小结
- 黑马程序员—集合框架小结
- 黑马程序员-------java中if和switch条件语句小结
- 黑马程序员-----Category,protocol和block(四)
- [黑马程序员](第9天)面向对象小结
- [黑马程序员]--集合基础知识小结与泛型
- 黑马程序员—13—java基础:有关集合类的学习笔记和心得体会
- Android8.0有关行为变更小结
- 有关SCN的小结
- js有关元素内容操作小结
- 奋斗黑马程序员----Java之泛型小结
- 黑马程序员 函数重载小结
- 黑马程序员————OC语言BLOCK和Protocol总结
- 黑马程序员_OC_ARC,block,protocol
- 黑马程序员_学习记录20:HTML,JavaScript,CSS小结
- Google protocol buffers 小结(二)