黑马程序员------协议(Protocal)
来源:互联网 发布:北大生命科学知乎 编辑:程序博客网 时间:2024/05/27 21:49
1, 协议简介
1.protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现。
2.只要某个类遵守了这个协议,就拥有了这个协议中的所有方法声明。
3.只要父类遵守了某个协议,那么子类也遵守。
4.protocol声明的方法可以让任何类去实现,protocol就是协议。
5.OC不能继承多个类(单继承)但是能够遵守多个协议。继承(:),遵守协议(< >)
6.基协议:<NSObject>是基协议,是最根本最基本的协议,其中声明了很多最基本的方法。
7.协议可以遵守协议,一个协议遵守了另一个协议,就可以拥有另一份协议中的方法声明。
2, 基本使用
//协议的声明
#import <foundation foundation.h="">
@protocol OneProtocol <nsobject>
//可以选择实现的方法:
@optional
-(void) optionalMethod1;
-(void) optionalMethod2;
//必须实现的方法:
@required
-(void) requiredMethod1;
@end
//采用协议(Test.h)
#import "OneProtocol.h"
@interface Test : NSObject<oneprotocol></oneprotocol></nsobject></foundation>
3,协议的定义
@protocol 协议名称 <NSObject>
//方法声明列表
@end;
4,如何遵守协议
(1)类遵守协议
@protocol 类名:父类名 <协议名称1,协议名称2>
@end
(2)协议遵守协议
@protocol 协议名称 <其他协议名称>
@end;
5,协议方法声明中的关键字
(1)required (默认)要求实现,若没有实现则警告但不报错
(2)optional 不要求实现
6,定义变量时遵守协议的限制
类名<协议名称> *变量名 NSObject<.Myprotocol> *obj;
id <协议名称> 变量名 id <.Myprotocol> obj1;
7,property中声明的属性也可以遵守协议
@property (nonatomic ,strong ) 类名<协议名称> *属性名;
@property (nonatomic ,strong ) id<协议名称> 属性名;
-------------------------加油自己
- 黑马程序员------协议(Protocal)
- 黑马程序员------HTTP协议
- 黑马程序员_OC协议
- 黑马程序员__protocol协议
- 黑马程序员--协议
- 黑马程序员---Protocol协议
- [黑马程序员][OC]协议
- 黑马程序员一协议
- 黑马程序员_iOS_OC_协议
- 非正式协议(interface)"与"正式协议(protocal)"
- "非正式协议(interface)"与"正式协议(protocal)"
- Protocal
- 黑马程序员:HTTP协议--MyWebServer
- 12.黑马程序员-protocol(协议)
- 黑马程序员-网络传输协议
- 黑马程序员——协议
- 【黑马程序员】分类与协议
- 黑马程序员_@protocol 协议
- SQL函数说明大全
- 深入浅出Docker
- 2014下半年自学Linux命令1(持续更新)
- UML系列图--用例图
- Mac OS--iTerm2
- 黑马程序员------协议(Protocal)
- 2014下半年自学Linux命令2(持续更新)
- C++中的重载、覆盖(多态)和隐藏
- 第3周课后实践·程序阅读(4)-利用引用访问私有数据成员
- 【iOS开发】编译libx264和带libx264的FFMpeg包
- Web前端开发规范收集
- 人生第一个程序!
- 2014年下半年自学LINux命令3(持续更新)
- 第三周项目五(4):数组做数据成员(3的多文件方式组织)