ios之delegate测试

//
//  main.m
//  delegateMacTest
//
//  Created by chenqy on 16/11/21.
//  Copyright © 2016年 chenqy. All rights reserved.
//

#import <Foundation/Foundation.h>

#pragma mark 代理协议申明
@class Baby;
@protocol BabyDelegate <NSObject>
- (void)babyWantEat:(Baby *)baby;
- (void)babyWantSleep:(Baby *)baby;
@end

#pragma mark 婴儿类申明
@interface Baby : NSObject
@property (nonatomic, assign) int food;
@property (nonatomic, assign) int sleep;
@property (nonatomic, strong) id<BabyDelegate> delegate;

- (void)wantEat;
- (void)wantSleep;
@end

#pragma mark 婴儿类实现
@implementation Baby
- (void)wantEat {
    NSLog(@"婴儿想吃东西");
    [self.delegate babyWantEat:self];// 通知保姆喂婴儿
}

- (void)wantSleep {
    NSLog(@"婴儿想睡觉");
    [self.delegate babyWantSleep:self];// 通知保姆哄婴儿睡觉
}
@end

#pragma mark 保姆类的代理协议申明
@protocol BabyDelegate;
@interface Nurse : NSObject <BabyDelegate>
@end

#pragma mark 保姆类的代理协议实现
@implementation Nurse
- (void)babyWantEat:(Baby *)baby {
    baby.food += 10;
    NSLog(@"保姆喂婴儿吃东西--现在的食量是%d", baby.food);
}

- (void)babyWantSleep:(Baby *)baby{
    baby.sleep += 10;
    NSLog(@"保姆哄婴儿睡觉--现在的睡意是%d", baby.sleep);
}
@end


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"delegate test!");
        Baby *baby = [Baby new];
        Nurse *nurse = [Nurse new];
        baby.delegate = nurse; //婴儿的照料委托给保姆
        [baby wantEat];
        [baby wantSleep];
        [baby wantSleep];
    }
    return 0;
}

运行结果:

2016-11-21 22:54:08.465 delegateMacTest[911:16705] delegate test!
2016-11-21 22:54:08.468 delegateMacTest[911:16705] 婴儿想吃东西
2016-11-21 22:54:08.468 delegateMacTest[911:16705] 保姆喂婴儿吃东西--现在的食量是10
2016-11-21 22:54:08.469 delegateMacTest[911:16705] 婴儿想睡觉
2016-11-21 22:54:08.469 delegateMacTest[911:16705] 保姆哄婴儿睡觉--现在的睡意是10
2016-11-21 22:54:08.469 delegateMacTest[911:16705] 婴儿想睡觉
2016-11-21 22:54:08.469 delegateMacTest[911:16705] 保姆哄婴儿睡觉--现在的睡意是20
Program ended with exit code: 0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值