#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;
}
【Objective-c 学习笔记】广播模式
最新推荐文章于 2024-05-23 21:40:09 发布