// Child.h
NSString *notificationName;
#import <Foundation/Foundation.h>
@interface Child : NSObject
{
NSInteger _sleepTime;
}
@property (nonatomic) NSInteger sleepTime;
@end
// Child.m
#import "Child.h"
@implementation Child
@synthesize sleepTime = _sleepTime;
- (id)init
{
notificationName = @"wake up";
if (self = [super init]) {
self.sleepTime = 10;
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES];
}
return self;
}
- (void)timerAction:(NSTimer *)timer
{
self.sleepTime --;
NSLog(@"%ld", self.sleepTime);
if (self.sleepTime <= 1) {
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"obj_1", @"key_1", @"obj_2", @"key_2", nil];
[timer invalidate];
NSNotificationCenter *defaultNotificationCenter = [NSNotificationCenter defaultCenter];
[defaultNotificationCenter postNotificationName:notificationName object:self userInfo:dict];
// 参数: 通知名 谁发的通知 通知附加信息
}
}
@end
// Father.h
#import <Foundation/Foundation.h>
@interface Father : NSObject
@end
// Father.m
#import "Father.h"
@implementation Father
- (id)init
{
extern NSString *notificationName;
if (self = [super init]) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveNotification:) name:notificationName object:nil];
// 参数: 谁接收 触发方法 通知名 接收谁发的通知,nil表示一切
}
return self;
}
- (void)didReceiveNotification:(id)sender
{
NSLog(@"%s", __func__);
NSNotification *notification = (NSNotification *)sender;
NSLog(@"%@", notification.userInfo);
}
@end
// main.m
#import <Foundation/Foundation.h>
#import "Father.h"
#import "Child.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
[[Child alloc] init];
[[Father alloc] init];
[[NSRunLoop currentRunLoop] run];
}
return 0;
}
NSNotification+extern
最新推荐文章于 2017-04-20 09:36:00 发布