为了能让小白明白逻辑关系设置一个简单的场景 比如说我要在B类中改变A类的页面颜色 (A和B之间可以完全没关系)
首先在A类里面写 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(click:) name:@"abcdef" object:nil]; 创建一个监控者 它所监控的是abcdef这个属性 一旦这个属性被监控到 他就运行click:这个方法
在B类中写 [[NSNotificationCenter defaultCenter]postNotificationName:@"abcdef" object:obj]; 此时注意 这里的abcdef一定与创建时的要监控的属性一致 可以随便写 但是要保证两边一致 这个obj是一个id对象 可以给传数组字典 等等等 都行 在B中一旦运行到这一行代码 A类就会检测到 之后A类就会运行 click:这个方法 此时注意
click:我们写的是带”:“的 也就是说传值得 用过UIButton点击的都知道 传的是按钮本身 这个同理 传的是通知本身 那么传他有什么用呢 请看下边
- (void)click:(NSNotification *)notification{
notification.object;
}
notification是一个通知对象 他有一个属性是object, 这个属性就是我们刚才在B类中传过来的obj 这下明白了吧
就是说 B类中 [[NSNotificationCenter defaultCenter]postNotificationName:@"abcdef" object:obj]; 这句代码 后边的obj是你传过去的 他可以是 数组 或 字典 或等等等 都行
之后A类中这个 notification.object 就是obj 这样是不是实现了通知传值 可用性很灵活