步骤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];