--------------- PersonOne.h ---------------
#import
<Foundation/Foundation.h>
@protocol
Buy <
NSObject
>
-( void ) buyTicket:( NSString *)ticket;
-( void ) buyTicket:( NSString *)ticket;
@end
@interface
PersonOne :
NSObject
@property ( weak ) id < Buy > delegate;
-( void ) wantToSeeMovies:( NSString *)movie;
@property ( weak ) id < Buy > delegate;
-( void ) wantToSeeMovies:( NSString *)movie;
@end
--------------- PersonOne.m ---------------
#import
"PersonOne.h"
@implementation PersonOne
-( void ) wantToSeeMovies:( NSString *)movie
{
NSLog ( @" 我想看《 %@ 》 " , movie);
}
@implementation PersonOne
-( void ) wantToSeeMovies:( NSString *)movie
{
NSLog ( @" 我想看《 %@ 》 " , movie);
}
@end
--------------- PersonTwo.h ---------------
#import
<Foundation/Foundation.h>
#import "PersonOne.h"
@interface PersonTwo: NSObject < Buy >
#import "PersonOne.h"
@interface PersonTwo: NSObject < Buy >
@end
--------------- PersonTwo.m ---------------
#import
"PersonTwo.h"
@implementation PersonTwo
-( void ) buyTicket:( NSString *)ticket
{
NSLog ( @" 代理买了《 %@ 》的电影票 " , ticket);
}
@implementation PersonTwo
-( void ) buyTicket:( NSString *)ticket
{
NSLog ( @" 代理买了《 %@ 》的电影票 " , ticket);
}
@end
---------------
main.m
---------------
#import
<Foundation/Foundation.h>
#import "PersonOne.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 : @" 大圣归来 " ];
}
{
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.这样类的定义具有了更好的通用性质,具体的方法交给遵守协议的类去完成。