最近写了个项目,在用户登录的时候,很多地方要发生相应地变化,包括按钮由登录变为注销,已经用户头像和基本信息的拿取。
因为分布在不同的VC,之前采取的办法是在viewWillAppear里面进行判断,后来发现这样做有些地方的UI不能及时更新过来,于是发现了NSNotificationCenter。
NSNotificationCenter消息通信机制
作用:NSNotificationCenter是专门供程序中不同类间的消息通信而设置的.
注册通知:即要在什么地方接受消息
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test:) name:@" test" object:nil];
参数介绍:
addObserver: 观察者,即在什么地方接收通知;
selector: 收到通知后调用何种方法;
name: 通知的名字,也是通知的唯一标示,编译器就通过这个找到通知的;
object: 接收那个通知者发出的通知,nil为默认接收所有通知者发出的通知。
发送通知:调用观察者处的方法。
[[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:nil];
参数:
postNotificationName:通知的名字,也是通知的唯一标示,编译器就通过这个找到通知的。
object:传递的参数
当我登录成功的时候就调用了方法[[NSNotificationCenter defaultCenter]postNotificationName:@"login" object:nil];
当我注销登录的时候同样调用这个方法。
然后在需要更新UI的地方加上监听[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(refresh) name:@"login" object:nil];