OC Protocol----协议
2015-06-11 17:35
316 查看
类似Java的泛型与接口的结合体,用于类型的<>中,可以多继承(按照OC的说法叫遵从某些协议)
1、定义协议
2、符合(实现)协议
3、使用并调用回调
最后
1、定义协议
@protocol Client <NSObject> -(void)defaultMethod;//默认必须实现 @required//必须 -(void)required; @optional//可选 -(void)optional; @end
2、符合(实现)协议
#import "Client.h" @interface JackClient : NSObject<Client> @end @implementation JackClient -(void)defaultMethod{ NSLog(@"this is defaultMethod"); } -(void)required{ NSLog(@"this is required method"); } @end
3、使用并调用回调
#import "Client.h" #protocol JackClient @interface Test : NSObject<Client>{ id<Client> client; } -(id)initWithClient:(id<Client>) client; -(void) turnTheCrank; @property(retain) id<Client> client; @end @implementation Test -(id)initWithClient:(id<Client>)client{ self = [super init]; if (self) { _client = client; } return self; } -(void) turnTheCrank{ [self.client defaultMethod]; [self.client required]; if ([self.client respondsToSelector:@selector(optional)]) {//可选回调可先判断是否实现,再调用 [self.client optional]; } } @end
最后
[[[Test alloc]initWithClient:[[JackClient alloc] init]] turnTheCrank];
相关文章推荐
- spring注解实例1
- free -m 详解
- Contains Duplicate II
- SurfaceView和SurfaceHolder
- ORA-07445&ORA-00108错误案例
- getPhysicalNumberOfCells 与 getLastCellNum的区别
- struts2的动态方法配置
- 时间服务器(Linux ntp)
- Linux图形界面与命令行模式切换
- Junction.exe 命令应用详解及下载
- Samba & Nginx - Resource temporarily unavailable
- yum安装gnome和kde桌面
- Debian 6(Squeeze)升级至Debian 7(Wheezy)
- 百度Android定位SDK实现获取当前经纬度及位置
- Object C学习笔记4-内存管理
- 二叉树的深度
- jqueryUI的拖动说明
- MFC 不同工程的对话框如何复制过来?
- 几种调用协议的区别__pascal __cdecl __msfastcall __fastcall __stdcall
- iOS Mail.app inject kit