ios通知,直接定义处理函数

时间:2014-05-10 00:13:44

标签: ios nsnotificationcenter

我希望在收到" ready"时做一些动作。通知。

基本上,我们这样做:

// earlier in a method
    ...
    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector( notificationHandler )
     name:@"ready"
     object:nil];


// later in file
- (X) notificationHandler{
    ...
}

在我的情况下,处理通知的方法将是一行常设函数,所以如果可能的话,我想在观察者块中定义它。

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector( I WANT TO DEFINE A FUNCTION HERE )
 name:@"ready"
 object:nil];

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

只是为了让你知道存在这种方法:

[[NSNotificationCenter defaultCenter] addObserverForName:@"ready" 
                                                  object:nil 
                                                   queue:nil 
                                              usingBlock:^(NSNotification *note) {
    //Do something
}];

并且您正在谈论在@selector指令中编写函数 ...没有意义且不可能

享受上述功能;)

答案 1 :(得分:1)

即使有一些官方API可以做到这一点,我强烈建议你使用它们,因为它们是leaked。您可以使用Nick Lockwood的FXNotifications,它提供您想要的功能:使用块作为通知监听器。

添加.h&项目中的.m个文件,然后调用:

[[NSNotificationCenter defaultCenter] addObserver:self
                                          forName:@"ready"
                                           object:nil
                                            queue:[NSOperationQueue mainQueue]
                                       usingBlock:^(NSNotification *note, id observer) {
                                                       // Your inline function here
                                                  }];