【Objective-c 学习笔记】广播模式
来源:互联网 发布:炉石传说数据库 编辑:程序博客网 时间:2024/06/06 14:59
#import <Foundation/Foundation.h>@protocol Listening <NSObject>- (void)listen;@end////////////////////////////////@interface User : NSObject <Listening>@property (nonatomic,copy) NSString *name;@end@implementation User@synthesize name;- (void)listen{ NSLog(@"I am %@ I got it!", self.name);}@end///////////////////////////////@interface NoticeCenter : NSObject@property (nonatomic,retain) NSMutableArray *registers;- (void)registerUser:(id<Listening>)aUser;- (void)brodcastFromUser:(id<Listening>)aUser;@end@implementation NoticeCenter@synthesize registers;- (id)init{ if (self = [super init]) { self.registers = [[NSMutableArray alloc] initWithCapacity:3]; } return self;}- (void)registerUser:(id<Listening>)aUser{ [self.registers addObject:aUser];}- (void)brodcastFromUser:(id<Listening>)aUser{ [self.registers removeObject:aUser]; for (id obj in self.registers) { [obj listen]; }}@end/////////////////////int main(int argc, const char * argv[]){ @autoreleasepool { NSLog(@"Now broadcast begaining"); NoticeCenter *notice = [[NoticeCenter alloc] init]; User *sandy = [[User alloc] init]; sandy.name = @"sandy"; User *jack = [[User alloc] init]; jack.name = @"jack"; User *lucy = [[User alloc] init]; lucy.name = @"lucy"; [notice registerUser:sandy]; [notice registerUser:jack]; [notice registerUser:lucy]; [notice brodcastFromUser:sandy]; } return 0;}