使用NSNotification作为if参数

时间:2014-03-03 04:32:35

标签: ios iphone objective-c

只是想知道是否有办法将NSNotification观察者用作if语句参数,或者在选择器部分中有一段代码

EG

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector( { SOME NEW CODE GOES HERE! ) name:@"addressTypeChanged" object:nil];

OR

if ([[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(self) name:@"addressTypeChanged" object:nil]) {

//some code//
}

2 个答案:

答案 0 :(得分:2)

到第一行:不,没有办法在@selector()内放置一个块。值得一看的是@selector是什么以及它是如何工作的。 Here's one particular question可能会让你走上正轨。

到第二行: addObserver:selector:...方法的返回类型为void,并且在NO语句中始终等同于if

您可能正在寻找的是基于NSNotificationCenter块的API:

- (id)addObserverForName:(NSString *)name 
                  object:(id)obj 
                   queue:(NSOperationQueue *)queue 
              usingBlock:(void (^)(NSNotification *))block

收到通知后,将调用block参数。

答案 1 :(得分:0)

[[NSNotificationCenter defaultCenter] addObserverForName:@"addressTypeChanged"
                                                  object:object
                                                   queue:nil
                                              usingBlock:^(NSNotification *notification){
                                                  /*
                                                    here you can call another methos
                                                   */
                                              }];