2010-12-05 54 views
0

在我的课堂我有这个属性:@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 

虽然选择器不为空,但我确实设置了一个。

为什么这不起作用?

回答

1

addObserver:行是init你班上的方法吗?如果是这样,那么它将使用didStartRestoreSelectordidBeginBackupSelector的值,因为它恰好存在于那个时间点(将是NULL)。初始化后所做的任何更改都不会自动获取。

相反,您可以修改构造函数以在初始化时选择选择器,也可以动态实现该属性,以便setDidStartRestoreSelector:将为注册通知重新注册对象。

+0

是的它是在初始化。 – Pripyat 2010-12-05 20:54:33