ios之delegate测试

//
//  main.m
//  delegateMacTest
//
//  Created by chenqy on 16/11/21.
//  Copyright © 2016年 chenqy. All rights reserved.
//#import #pragma mark 代理协议申明
@class Baby;
@protocol BabyDelegate 
- (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 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 
@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);
}
@endint 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



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部