【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;}

原创粉丝点击