协议及其注意事项
来源:互联网 发布:小天才软件下载 编辑:程序博客网 时间:2024/05/01 02:28
1. Protocol翻译过来, 叫做”协议”
protocol它可以声明一些必须实现的方法和选择实现的方法。这个和java是完全不同的
Protocol的作用
用来声明一些方法
也就说, 一个Protocol是由一系列的方法声明组成的
格式
@protocol 协议名称
// 方法声明列表
@end
类遵守协议
一个类可以遵守1个或多个协议
任何类只要遵守了Protocol,就相当于拥有了Protocol的所有方法声明
@interface 类名 : 父类<协议名称1, 协议名称2,…>
@end
示例
@protocolSportProtocol<NSObject>
- (void)playFootball;
- (void)playBasketball;
@end
#import "SportProtocol.h" // 导入协议
@interface Studnet : NSObject<SportProtocol> // 遵守协议
@end
@implementation Student
// 实现协议方法
- (void)playBasketball
{
NSLog(@"%s", __func__);
}
// 实现协议方法
- (void)playFootball
{
NSLog(@"%s", __func__);
}
@end
2.protocol 的使用注意
- 1)Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现。
@protocolSportProtocol<NSObject>
{
int _age; // 错误写法
}
- (void)playFootball;
- (void)playBasketball;
@end
2)只要父类遵守了某个协议,那么子类也遵守。
@protocolSportProtocol<NSObject>
- (void)playFootball;
- (void)playBasketball;
@end
#import "SportProtocol.h"
@interface Student : NSObject<SportProtocol>
@end
@interfaceGoodStudent : Student
@end
@implementationGoodStudent
- (void)playFootball
{
NSLog(@"%s", __func__);
}
- (void)playBasketball
{
NSLog(@"%s", __func__);
}
@end
3)OC不能继承多个类(单继承)但是能够遵守多个协议。继承(:),遵守协议(<>)
#import "SportProtocol.h"
#import "StudyProtocol.h"
@interface Student : NSObject<SportProtocol, StudyProtocol>
@end
4)协议可以遵守协议,一个协议遵守了另一个协议,就可以拥有另一份协议中的方法声明
@protocol A
-(void)methodA;
@end
@protocol B <A>
-(void)methodB;
@end
@interface Student : NSObject<B>
-(void)methodA; // 同时拥有A/B协议中的方法声明
-(void)methodB;
@end
protocol它可以声明一些必须实现的方法和选择实现的方法。这个和java是完全不同的
Protocol的作用
用来声明一些方法
也就说, 一个Protocol是由一系列的方法声明组成的
格式
@protocol 协议名称
// 方法声明列表
@end
类遵守协议
一个类可以遵守1个或多个协议
任何类只要遵守了Protocol,就相当于拥有了Protocol的所有方法声明
@interface 类名 : 父类<协议名称1, 协议名称2,…>
@end
示例
@protocolSportProtocol<NSObject>
- (void)playFootball;
- (void)playBasketball;
@end
#import "SportProtocol.h" // 导入协议
@interface Studnet : NSObject<SportProtocol> // 遵守协议
@end
@implementation Student
// 实现协议方法
- (void)playBasketball
{
NSLog(@"%s", __func__);
}
// 实现协议方法
- (void)playFootball
{
NSLog(@"%s", __func__);
}
@end
2.protocol 的使用注意
- 1)Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现。
@protocolSportProtocol<NSObject>
{
int _age; // 错误写法
}
- (void)playFootball;
- (void)playBasketball;
@end
2)只要父类遵守了某个协议,那么子类也遵守。
@protocolSportProtocol<NSObject>
- (void)playFootball;
- (void)playBasketball;
@end
#import "SportProtocol.h"
@interface Student : NSObject<SportProtocol>
@end
@interfaceGoodStudent : Student
@end
@implementationGoodStudent
- (void)playFootball
{
NSLog(@"%s", __func__);
}
- (void)playBasketball
{
NSLog(@"%s", __func__);
}
@end
3)OC不能继承多个类(单继承)但是能够遵守多个协议。继承(:),遵守协议(<>)
#import "SportProtocol.h"
#import "StudyProtocol.h"
@interface Student : NSObject<SportProtocol, StudyProtocol>
@end
4)协议可以遵守协议,一个协议遵守了另一个协议,就可以拥有另一份协议中的方法声明
@protocol A
-(void)methodA;
@end
@protocol B <A>
-(void)methodB;
@end
@interface Student : NSObject<B>
-(void)methodA; // 同时拥有A/B协议中的方法声明
-(void)methodB;
@end
0 0
- 协议及其注意事项
- Snackbar使用及其注意事项
- switch语句及其注意事项
- Snackbar使用及其注意事项
- DRBD配置及其注意事项
- hadoop安装及其注意事项
- Snackbar使用及其注意事项
- 协议设计注意事项
- http 协议注意事项
- dubbo协议注意事项
- NAT的原理及其注意事项
- NAT的原理及其注意事项
- NAT的原理及其注意事项
- Wifi安装要点及其注意事项
- LSMW的流程及其注意事项
- 树状数组小结及其注意事项
- 快速排序算法及其注意事项
- CString的实现及其注意事项
- ubuntu下无法启动谷歌浏览器
- 食物链
- iOS View添加圆角
- 嵌入式SQL应用(C语言)
- HTML标签
- 协议及其注意事项
- linux下检查内存泄露的工具--mtrace
- 如何搞定foxmail下的.eml文件导入到win7内的outlook2007
- 对于STM32别名区的理解 (转载)
- [转]NAT、防火墙的原理区别和分类
- 技巧:在 C/C++中如何构造通用的对象链表
- codeforces 316 D
- HDU 4612 Warm up 树的最长路径DP + 无向图带重边
- 根据进程ID获取exe路径