#import <Foundation/Foundation.h>
@interface Agent : NSObject
// 返回票价
- (double) ticketPrice;
// 还剩多少张票
- (int) leftTicketsNumber;
@end
#import "Agent.h"
@implementation Agent
// 剩余的票数
- (int)leftTicketsNumber
{
return 10;
}
// 一张票多少钱
- (double)ticketPrice
{
return 500;
}
#import <Foundation/Foundation.h>
#import "Agent.h"
@interface Person : NSObject
- (void) buyTicket;
// 拥有一个代理属性
@property (nonatomic, retain) Agent *delegate;
@end
#import "Person.h"
@implementation Person
// 买电影票
- (void)buyTicket
{
// 叫代理去帮自己买票(询问票价、询问票的剩余张数)
double price = [_delegate ticketPrice];
int number = [_delegate leftTicketsNumber];
NSLog(@"通过代理的帮忙,票价=%.1f, 还剩%d张票", price, number);
}
- (void)dealloc
{
[_delegate release];
[super dealloc];
}
@end
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Agent.h"
int main()
{
// 人
Person *p = [[Person alloc] init];
// 代理
Agent *a = [[Agent alloc] init];
// 设置人的代理属性
p.delegate = a;
// 人打算买票
[p buyTicket];
[a release];
[p release];
return 0;
}
#import <Foundation/Foundation.h>
@protocol TicketDelegate <NSObject>
- (double) ticketPrice;
- (int) leftTicketsNumber;
@end