簡單的房屋銷售委託例子
#import <Foundation/Foundation.h>
@protocol SaleHouse <NSObject>//協議頭文件
-(void)saleHouse;
@end
#import <Foundation/Foundation.h>
#import "SaleHouse.h"//賣房者聲明部分,遵循賣房協議
@interface HouseSaler : NSObject<SaleHouse>
@property(retain,nonatomic) NSString *name;
@property(assign,nonatomic) int age;
+(id)houseSalerWithName:(NSString *) n andAge:(int) a;
-(void)saleHouse;
@end
#import "HouseSaler.h"//賣房者實現部分
@implementation HouseSaler
+(id)houseSalerWithName:(NSString *) n andAge:(int) a{
HouseSaler *h = [HouseSalernew];
h.name = n;
h.age = a;
return [h autorelease];
}
-(void)saleHouse{
NSLog(@"我是房屋銷售%@,%d歲,正在努力幫房東賣房子",self.name,self.age);
}
@end
#import <Foundation/Foundation.h>
#import "SaleHouse.h"
@interface Landlord : NSObject//房東聲明部分
@property(retain,nonatomic) NSString *name;
@property(assign,nonatomic) int age;
+(id)landLordWithName:(NSString *) n andAge:(int) a;
@property(assign,nonatomic) id<SaleHouse>deleagte;//設置代理
-(void)shouqian;
@end
#import "Landlord.h"//房東實現部分
@implementation Landlord
+(id)landLordWithName:(NSString *) n andAge:(int) a{
Landlord *l = [Landlordnew];
l.name = n;
l.age = a;
return [l autorelease];
}
-(void)shouqian{
if ([self.deleagteconformsToProtocol:@protocol(SaleHouse)]) {
if ([self.deleagterespondsToSelector:@selector(saleHouse)]) {
[self.deleagtesaleHouse];
}
}
NSLog(@"我是房東%@,%d歲,正在等着收錢",self.name,self.age);
}
@end
#import <Foundation/Foundation.h>
#import "HouseSaler.h"
#import "Landlord.h"
int main(int argc, constchar * argv[])//main函數測試
{
@autoreleasepool {
HouseSaler *h = [HouseSalerhouseSalerWithName:@"小麥"andAge:23];
Landlord *l = [LandlordlandLordWithName:@"小明"andAge:30];
l.deleagte = h;//指定代理
[l shouqian];
}
return 0;
}