一般正向传值使用属性,而反向传值使用协议或Block即可,但是我们有时候也会遇到需要隔页面传值的情况,比如一连回退超过一个页面,此时就需要使用通知进行传值了。
使用通知需要按照步骤进行,先在目标文件注册通知,再发送通知,不然目标文件无法接收通知信息。代码在程序运行时的顺序很重要,必须是先注册后发送。
注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doNotification:) name:@"aNotification" object:nil];
-
name
和发送通知时的NotificationName
是同一个,用于标识同一个通知的发送和接收 -
selector
为当接收到通知时执行的方法 - 如果通知只用于一处,可在执行方法内部设置移除通知
发送通知
NSDictionary * dic = @{@"price":@(1024.66),@"name":@"aName"};
[[NSNotificationCenter defaultCenter] postNotificationName:@"aNotification" object:nil userInfo:dic];
- 通知根据
NotificationName
参数识别,该参数和注册时用的name
一致,自行设置 -
object
为接收对象 -
userInfo
为需要传递过去的参数,自行按需要设置
注册通知处的执行方法
-(void)doNotification:(NSNotification *)notifocation{
//接收通知并执行对应方法
}
- 传递的值在
notifocation.userInfo
内
移除通知
[[NSNotificationCenter defaultCenter]removeObserver:self name:@"aNotification" object:nil];
网友评论