cocoa - 选择器作为属性问题

标签 cocoa notifications

在我的类(class)中,我有这个属性:@property SEL didStartRestoreSelector;,然后将其合成为@synthesize didStartRestoreSelector;

在我的类(class)中,我有以下行: [[NSDistributedNotificationCenter defaultCenter] addObserver:self 选择器: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

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

为什么这不起作用?

最佳答案

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

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

关于cocoa - 选择器作为属性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361060/

相关文章:

objective-c - NSTableView 的嵌套 NSNotification

ios - AppDelegate : call function only if theres a new notification, 怎么办?

Azure 通知中心 GCM 身份验证错误 401

xcode - 如何将自定义的 cocoa 框架嵌入到 mac os x 应用程序中?

macos - 如何使用 applescript 按应用程序顺序枚举正在运行/打开的应用程序?

android - 多个状态栏通知

android - 在通知中显示一个持续的进度条,android?

android - AlarmManager 的更新时间 (Android)

iphone - Objective-C 约定 : When to use For and when to use With

objective-c - 用户默认值从 Obj C 迁移到 Swift