【发布时间】:2016-08-22 11:01:07
【问题描述】:
我正在尝试在 NSNotificationCenter 中实现一个观察者。而不是使用self 作为观察者,我想创建一个小对象来完成它:
typedef void (^ErrorCallback)(NSError*);
typedef void (^SuccessCallback)();
typedef void (^ReplicationChanged) (NSNotification*);
@interface SyncParams : NSObject
@property (copy) ErrorCallback errorCallback;
@property (copy) SuccessCallback successCallback;
@property (copy) ReplicationChanged replicationChanged;//this used to observe
- (void)replicationChanged:(NSNotification*)notification;
@end
@implementation SyncParams
@end
然后我创建了一个观察者的实例:
SyncParams* params = [SyncParams alloc];
params.replicationChanged = ^(NSNotification* notification) {
//do stuff here
};
最后将其添加到 NSNotificationCenter:
[[NSNotificationCenter defaultCenter] addObserver: params
selector: @selector(replicationChanged:)
name: kCBLReplicationChangeNotification
object: replicationObject];
但我收到此错误:Exception '-[SyncParams replicationChanged:]: unrecognized selector sent to instance 0x7ff945c049a0' was thrown
我对 Objective-c 很陌生!有什么指点吗?
【问题讨论】:
-
replicationChanged:的实现是什么样的? -
我没有看到,
replicationChanged:已实现。 -
这不就是:
params.replicationChanged = ^(NSNotification* notification) { //do stuff here };?? -
你曾经正确调试过这个吗?我遇到了同样的问题。
标签: objective-c observer-pattern nsnotificationcenter couchbase-lite