045.@protocol 委托代理
2015-07-27 16:32
351 查看
--------------- PersonOne.h ---------------
#import
<Foundation/Foundation.h>
@protocol
Buy <NSObject>
-(void) buyTicket:(NSString
*)ticket;
@end
@interface
PersonOne :
NSObject
@property
(weak)
id
<Buy> delegate;
-(void) wantToSeeMovies:(NSString
*)movie;
@end
--------------- PersonOne.m ---------------
#import
"PersonOne.h"
@implementation
PersonOne
-(void) wantToSeeMovies:(NSString
*)movie
{
NSLog(@"我想看《%@》",
movie);
}
@end
--------------- PersonTwo.h ---------------
#import
<Foundation/Foundation.h>
#import
"PersonOne.h"
@interface
PersonTwo:
NSObject <Buy>
@end
--------------- PersonTwo.m ---------------
#import
"PersonTwo.h"
@implementation
PersonTwo
-(void) buyTicket:(NSString*)ticket
{
NSLog(@"代理买了《%@》的电影票",
ticket);
}
@end
---------------
main.m
---------------
#import
<Foundation/Foundation.h>
#import
"PersonOne.h"
#import
"PersonTwo.h"
int
main()
{
PersonOne *p1 = [[PersonOne
alloc]init];
PersonTwo *p2 = [[PersonTwo
alloc]init];
p1.delegate
= p2;
[p1
wantToSeeMovies:@"大圣归来"];
if (p1.delegate
&& [p1.delegate
respondsToSelector:@selector(buyTicket:)])
{
[p1.delegate
buyTicket:@"大圣归来"];
}
}
一、编写本节代码的具体步骤:
1.创建命令行文件,生成main.m源文件。
2.创建PersonOne类,分别编辑PersonOne.h文件,PersonOne.m文件如上。
3.创建PersonTwo类,分别编辑PersonTwo.h文件,PersonTwo.m文件如上。
4.编辑main.m文件如上。
二、本节代码涉及到的知识点:
1.protocol协议体现的是一种规范,定义协议的类可以把协议内的方法委托给实现协议的类。
2.这样类的定义具有了更好的通用性质,具体的方法交给遵守协议的类去完成。
#import
<Foundation/Foundation.h>
@protocol
Buy <NSObject>
-(void) buyTicket:(NSString
*)ticket;
@end
@interface
PersonOne :
NSObject
@property
(weak)
id
<Buy> delegate;
-(void) wantToSeeMovies:(NSString
*)movie;
@end
--------------- PersonOne.m ---------------
#import
"PersonOne.h"
@implementation
PersonOne
-(void) wantToSeeMovies:(NSString
*)movie
{
NSLog(@"我想看《%@》",
movie);
}
@end
--------------- PersonTwo.h ---------------
#import
<Foundation/Foundation.h>
#import
"PersonOne.h"
@interface
PersonTwo:
NSObject <Buy>
@end
--------------- PersonTwo.m ---------------
#import
"PersonTwo.h"
@implementation
PersonTwo
-(void) buyTicket:(NSString*)ticket
{
NSLog(@"代理买了《%@》的电影票",
ticket);
}
@end
---------------
main.m
---------------
#import
<Foundation/Foundation.h>
#import
"PersonOne.h"
#import
"PersonTwo.h"
int
main()
{
PersonOne *p1 = [[PersonOne
alloc]init];
PersonTwo *p2 = [[PersonTwo
alloc]init];
p1.delegate
= p2;
[p1
wantToSeeMovies:@"大圣归来"];
if (p1.delegate
&& [p1.delegate
respondsToSelector:@selector(buyTicket:)])
{
[p1.delegate
buyTicket:@"大圣归来"];
}
}
一、编写本节代码的具体步骤:
1.创建命令行文件,生成main.m源文件。
2.创建PersonOne类,分别编辑PersonOne.h文件,PersonOne.m文件如上。
3.创建PersonTwo类,分别编辑PersonTwo.h文件,PersonTwo.m文件如上。
4.编辑main.m文件如上。
二、本节代码涉及到的知识点:
1.protocol协议体现的是一种规范,定义协议的类可以把协议内的方法委托给实现协议的类。
2.这样类的定义具有了更好的通用性质,具体的方法交给遵守协议的类去完成。
相关文章推荐
- http status code
- hdu5313--Bipartite Graph
- http断点续传原理:http头Range 、 Content-Range
- nyoj117 求逆序数【线段树】
- LayoutInflater 简要解析
- kvm(七)客户机vm主机磁盘扩容
- 29 - 数组中出现次数超过一半的数字
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- Vim as Python IDE on windows(转)
- poj3254 状态压缩dp
- Random Walk分割算法
- Rotate List
- JavaScript(二) DOM
- Request.ServerVariables 参数大全
- Jquery动态生成的html元素,然后给其中的元素添加样式
- windows下同一台服务器上装有两个ORACLE数据库实例,通过命令启停数据库
- 捕获键盘的每个字符,包括不可打印字符
- 复杂数据的冒泡排序
- hdu 3555 Bomb 【数位DP】
- HTTP协议