步驟ui
一、發出協議(在發協議者.h文件 下@interface-@end 上邊)atom
@protocol hireOneMaid <NSObject>spa
@required//必需要實現的方法(默認)代理
//打掃房間對象
- (void)cleanHouse;it
//照看孩子io
- (void)lookayMyBaby;require
//給我作飯select
- (void)cookWithName:(NSString *)name;方法
@optional//能夠實現,也能夠實現
@end
@protocol married <NSObject>
//必須是女的,並且有一個年齡範圍
- (void)yourAgeIdForMe:(int)age;
@end
二、誰遵照協議,須要實現@required的必須方法
一、在其.h文件中
//能夠遵照多分協議
@interface Maid : NSObject<hireOneMaid , married>
2 、在.m文件中 實現@repuired方法
@implementation Maid
//打掃房間
- (void)cleanHouse
{
NSLog(@"我會打掃房間");
}
//照看孩子
- (void)lookayMyBaby
{
NSLog(@"照看孩子有一套方法");
}
//給我作飯
- (void)cookWithName:(NSString *)name
{
NSLog(@"正在作%@" , name);
}
- (void)yourAgeIdForMe:(int)age
{
NSLog(@"哦如今%d ,我神劍多值" , age);
}
@end
3 、發協議者聲明代理
@interface Host : NSObject
//讓主人拿出一個僱保姆代理
@property (nonatomic , assign) id<hireOneMaid> maidDelegate;
//讓主人拿出一個徵婚代理
@property (nonatomic , assign) id<married> marryDelegate;
@end
四、聲明 實現方法
1 、在.h 聲明
//保姆協議應完成的事情
//房間髒了,讓代理去打掃
- (void)houseDiety;
//baby哭了,讓代理去照顧
- (void)babyCry;
//我餓了,讓代理去做飯
- (void)hungry;
//徵婚協議應該完成的事情
//想起個人女友了,你多大了
- (void)missMyGirlFriend;
二、在.m實現
//保姆協議應完成的事情
//房間髒了,讓代理去打掃
- (void)houseDiety
{
//若是個人代理實現了看孩子的方法
if ([_maidDelegate respondsToSelector:@selector(cleanHouse)]) {
[_maidDelegate cleanHouse];
}
}
//baby哭了,讓代理去照顧
- (void)babyCry
{
if ([_maidDelegate respondsToSelector:@selector(lookayMyBaby)]) {
[_maidDelegate lookayMyBaby];
}
}
//我餓了,讓代理去做飯
- (void)hungry
{
if ([_maidDelegate respondsToSelector:@selector(cookWithName:)]) {
[_maidDelegate cookWithName:@"西紅柿雞蛋麪"];
}
}
//徵婚協議應該完成的事情
//想起個人女友了,你多大了
- (void)missMyGirlFriend
{
if ([_marryDelegate respondsToSelector:@selector(yourAgeIdForMe:)]) {
[_marryDelegate yourAgeIdForMe:18];
}
}
5 、在main.m建立對象並實現
一、建立一個主人對象
Host *host = [[Host alloc] init];
二、建立兩個保姆對象
Maid *maid1 = [[Maid alloc] init];
Maid *maid2 = [[Maid alloc] init];
建立一個woman
Woman *woman1 = [[Woman alloc] init];
三、主人開始選人
//主人把代理給哪個保姆
host.maidDelegate = maid1;
//讓woman1作徵婚代理
host.marryDelegate = woman1;
host.marryDelegate = maid1;
四、主人說,保姆作
[host babyCry];
[host houseDiety];
[host hungry];
[host missMyGirlFriend];