//定义Boby类 继承NSObject
// .h工作 制定协议方法,设置delegate属性
#import <Foundation/Foundation.h>
@class Boby;
// 制定协议,协议名称是:类名+Delegate
@protocol BobyDelegate <NSObject>
@optional //是可选择性实现的
@required //是必须要实现的(默认是@required)
- (void)babyWantEat:(Boby *)baby;
- (void)babyWantSleep:(Boby *)baby;
@end
@interface Boby : NSObject
@property (nonatomic,assign)int foot;
@property (nonatomic,assign)int sleep;
- (void)wantEat;
- (void)wantSleep;
// 指定代理
@property (nonatomic,weak)id<BobyDelegate>delegate;
@end
// .m 调用代理方法
#import "Boby.h"
@implementation Boby
- (void)wantEat
{
NSLog(@"小孩要吃东西");
[self.delegate babyWantEat:self];
}
- (void)wantSleep
{
NSLog(@"小孩要睡觉");
[self.delegate babyWantSleep:self];
}
@end
// 定义Nurse类 .h工作 :遵守协议。
#import <Foundation/Foundation.h>
#import "Boby.h"
@interface Nurse : NSObject<BobyDelegate>
@end
//.m实现代理方法
#import "Nurse.h"
@implementation Nurse
- (void)babyWantEat:(Boby *)baby
{
NSLog(@"保姆喂了小孩%d克食物",baby.foot);
}
- (void)babyWantSleep:(Boby *)baby
{
NSLog(@"保姆让小孩睡了%d小时",baby.sleep);
}
@end
#import "ViewController.h"
#import "Boby.h"
#import "Nurse.h"
// 添加属性
@property (nonatomic,strong)Boby *baby;
@property (nonatomic,strong)Nurse *nurse;
- (void)viewDidLoad {
[super viewDidLoad];
_baby = [[Boby alloc]init];
_nurse = [[Nurse alloc]init];
_baby.foot = 5;
_baby.sleep = 12;
_baby.delegate = _nurse;
}
// 调用
- (IBAction)babyEat:(UIButton *)sender {
if ([_nurse respondsToSelector:@selector(babyWantEat:)]) {
[_baby wantEat];
}
}
- (IBAction)babySleep:(UIButton *)sender {
if ([_nurse respondsToSelector:@selector(babyWantSleep:)]) {
[_baby wantSleep];
}
}