NSNotification --关于通知

时间:2023-12-28 09:59:38

一、

通知(NSNotification)的发送(Post)和注册(add)都必须借助于通知中心(NSNotificationCenter)

发送通知:

 NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center postNotificationName:@"通知名字" object:self userInfo:@{@"key":@"object"}];

发送的通知中:

1.NotificationName是这则通知的名字,

2.object通常写self(可以在通知的接受者中提取到这个,实现回调,)

3.userInfo是一个字典用来存放传输的数据

注册通知接受者:(第一种方法)

   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(change:) name:@"通知名字" object:nil];

//接受所有名字是"通知名字"的通知

注册通知接受着:(第二种方法)

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(change:) name:nil object:self];

只接受object:后面带参数的人所发出的通知

以下两端是从 http://blog.csdn.net/zhanglei5415/article/details/6454940 摘抄的代码和解释

- (void)addObserver:(id)anObserver
           selector:(SEL)aSelector
               name:(NSString *)notificationName
             object:(id)anObject

注册anObserver对象:接受名字为notificationName, 发送者为anObject的notification. 当anObject发送名字为notificationName的notification时, 将会调用anObserver的aSelector方法,参数为该notification. 如果notificationName为nil. 那么notification center将anObject发送的所有notification转发给observer
. 如果anObject为nil.那么notification center将所有名字为notificationName的notification转发给observer

那么有通知的注册(add),就必须有通知的销毁(remove),下文中很好的提到了销毁时的注意事项等

http://www.jianshu.com/p/a4d519e4e0d5