在我的班级中我有这个属性:@property SEL didStartRestoreSelector;
然后将其合成为@synthesize didStartRestoreSelector;
。
在我的班上,我有以下几行:[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:didStartRestoreSelector name:@"restoreHasStarted" object:nil];
我希望自己能够使用属性自己设置选择器,但不幸的是它无法按预期工作。我就这样做了:
USBBackupFramework*framework = [[USBBackupFramework alloc] init];
framework.didBeginBackupSelector = @selector(didBegin);
不幸的是didBegin
永远不会被调用。相反,控制台输出:
2010-12-05 20:27:24.376 Framework Test App[5228:a0f] -[USBBackupFramework <null selector>]: unrecognized selector sent to instance 0x10013f0d0
虽然选择器不是null,但我设置了一个。
为什么这不起作用?
答案 0 :(得分:1)
您班级addObserver:
方法中的init
行?如果是这样,那么它将使用didStartRestoreSelector
或didBeginBackupSelector
的值,因为它恰好存在于该时间点(将是NULL
)。初始化后所做的任何更改都不会自动获取。
相反,您可以修改构造函数以在初始化时使用选择器,或者您可以动态实现该属性,以便setDidStartRestoreSelector:
将取消并重新注册对象以进行分布式通知。