Cocoa 选择器作为属性问题

Cocoa 选择器作为属性问题,cocoa,notifications,Cocoa,Notifications,在我的类中,我有这个属性:@property SEL didStartRestoreSelector然后将其合成为@synthesis-didStartRestoreSelector 在我的类中,我有以下行:[[NSDistributedNotificationCenter defaultCenter]addObserver:self-selector:DidStartStoreSelector名称:@“restoreHasStarted”对象:nil] 我希望自己能够使用该属性设置选择器,但不

在我的类中,我有这个属性:
@property SEL didStartRestoreSelector
然后将其合成为
@synthesis-didStartRestoreSelector

在我的类中,我有以下行:
[[NSDistributedNotificationCenter defaultCenter]addObserver:self-selector:DidStartStoreSelector名称:@“restoreHasStarted”对象:nil]

我希望自己能够使用该属性设置选择器,但不幸的是,它没有按预期工作。我就是这样做的:

USBBackupFramework*framework = [[USBBackupFramework alloc] init];
framework.didBeginBackupSelector = @selector(didBegin);
不幸的是,
didbegen
从未被调用。相反,控制台输出以下内容:

2010-12-05 20:27:24.376 Framework Test App[5228:a0f] -[USBBackupFramework <null selector>]: unrecognized selector sent to instance 0x10013f0d0
2010-12-05 20:27:24.376框架测试应用程序[5228:a0f]-[USBBackupFramework]:发送到实例0x10013f0d0的无法识别的选择器
但是选择器不是空的,我设置了一个


为什么不起作用?

是类的
init
方法中的
addObserver:
行吗?如果是这样,那么它将使用
didStartRestoreSelector
didBeginBackupSelector
的值,因为它恰好在该时间点存在(将为
NULL
)。初始化后所做的任何更改都不会自动拾取


相反,您可以修改构造函数以在初始化时使用选择器,或者动态实现该属性,以便
setDidStartRestoreSelector:
将取消并重新注册对象以进行分布式通知。

您也可以是观察自己的
didStart*选择器的键值,然后在观察方法中,取消注册旧的观察选择器并注册新的观察选择器