NSNotification

来源:互联网 发布:网络博客游戏平台 编辑:程序博客网 时间:2024/05/01 10:27

NSNotification

作用:NSNotificationCenter是 专门供程序中不同类间的消息通信而设置的.

注册通知:即 要在什么地方接受消息

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

      参数介绍:

          addObserver: 观察者,即在什么地方接收通知;

        selector: 收到通知后调用何种方法;

         name: 通知的名字,也是通知的唯一标示,编译器就通过这个找到通知的。

发 送通知:调用观察者处的方法。

           [[NSNotificationCenter defaultCenter] postNotificationName:@"mytest"  object:searchFriendArray];

          参数:

         postNotificationName:通知的名字,也是通知的唯一标示,编译器就通过这个找到通知的。

                 object:传递的参数

注册方法的写法:

- (void) mytest:(NSNotification*) notification

{

   id obj = [notification object];//获 取到传递的对象

 


附:注册键盘升启 关闭消息

  1. // 键盘升起 
  2. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
  3. // 键盘降下
  4. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

补充:

NSNotification

  个人觉得用这个东西在不同的viewcontroller间传东西很方便的

  发消息

  [[NSNotificationCenter defaultCenter] postNotificationName:@"popView"/*消息名字,在添加监听时会用到*/       object:@"ShowHomeLineViewController"/*传的参数,多个参数就可以用数组啦*/];

  收消息

  1、添加监听:

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(Show:)/*收到消息后的响应函数*/ name:@"popView"/*消息名字,在发消息时  指定的*/ object:nil];

  2、消息处理(实现前面的Show:函数)

  -(void)Show:(NSNotification*)notification

  {

  NSString* str = (NSString*)[notification object];//这里取出刚刚从过来的字符串

  }

  3、不要忘记移除监听

  [[NSNotificationCenter defaultCenter] removeObserver:self name:@"popView" object:nil];