【iOS】传值方式——通知

一般正向传值使用属性,而反向传值使用协议或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];

你可能感兴趣的:(【iOS】传值方式——通知)