您的位置:首页 > 其它

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.这样类的定义具有了更好的通用性质,具体的方法交给遵守协议的类去完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: