只是想知道是否有办法将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//
}
答案 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
*/
}];