转:http://tigercat1977.blog.163.com/blog/static/2141561122012111294949110/
第七讲:Obj-C 协议 Protocol
2012-12-12 09:49:49| 分类: Objective-C | 标签:objective-c |字号大中小 订阅
主要内容
什么是协议
如何定义协议
如何使用协议
什么是协议
协议是多个对象之间协商的一个接口对象
协议提供一系列方法用来在于协议的实现者和代理者之间的一种通信方式
协议类似于 C++ 中的纯虚函数,或者 java 中的接口
协议声明
头文件 Foo.h
@pritocol MyProtocol <NSObject>
// 要定义的变量
- (void) init;
- (int) update:(int) time;
@end
协议
Protocol 声明一系列方法,这些放在实现 Protocol 中实现
协议方法可以实现 optional , 可选实现
@required // 某一个方法必须实现
@optional // 某个方法可以不去实现
协议需要继承于 基协议 NSObject
协议可以多继承
协议声明
头文件 Foo.h
@pritocol MyProtocol <NSObject>
// 要定义的变量
@optional // 可选实现
- (void) init;
- (void) exit;
@required // 必须实现
- (int) update:(int) time;
@end
OC 定义协议和实现协议
头文件 Foo.h
@protocol MouseListener
@optional
- (BOOL) mousePressed;
- (BOOL) mouseClicked;
@end
@protocol KeyboardListener
- (BOOL) keyPressed;
@end
@interface Foo: NSObject <MouseListener, KeyboardListener>
{
......
}
@end
一个简单协议例子
协议使用例子
判断某个对象是否响应方法
既然接口可以部分实现,OC 对象提供了动态判断某个方法是否实现的方法
respondsToSelector
if ([test respondsToSelector:@selector(showInfo)])
{
[test showInfo];
}
respondsToSelector
什么是协议
如何定义协议
如何使用协议
什么是协议
协议是多个对象之间协商的一个接口对象
协议提供一系列方法用来在于协议的实现者和代理者之间的一种通信方式
协议类似于 C++ 中的纯虚函数,或者 java 中的接口
协议声明
头文件 Foo.h
@pritocol MyProtocol <NSObject>
// 要定义的变量
- (void) init;
- (int) update:(int) time;
@end
协议
Protocol 声明一系列方法,这些放在实现 Protocol 中实现
协议方法可以实现 optional , 可选实现
@required // 某一个方法必须实现
@optional // 某个方法可以不去实现
协议需要继承于 基协议 NSObject
协议可以多继承
协议声明
头文件 Foo.h
@pritocol MyProtocol <NSObject>
// 要定义的变量
@optional // 可选实现
- (void) init;
- (void) exit;
@required // 必须实现
- (int) update:(int) time;
@end
OC 定义协议和实现协议
头文件 Foo.h
@protocol MouseListener
@optional
- (BOOL) mousePressed;
- (BOOL) mouseClicked;
@end
@protocol KeyboardListener
- (BOOL) keyPressed;
@end
@interface Foo: NSObject <MouseListener, KeyboardListener>
{
......
}
@end
一个简单协议例子
协议使用例子
判断某个对象是否响应方法
既然接口可以部分实现,OC 对象提供了动态判断某个方法是否实现的方法
respondsToSelector
if ([test respondsToSelector:@selector(showInfo)])
{
[test showInfo];
}
respondsToSelector