在类别类方法上执行performSelector

时间:2012-04-04 15:12:30

标签: objective-c ios categories

我有一个名为EventEntry的NSManagedObject子类,由Xcode自动生成,我尽量不要触摸(如果我更改模型并想重新生成)。所以我将任何添加的功能放入一个名为EventEntry + Extended的类别中。

一个这样的功能是一个名为eventEntriesByUser的类方法。我已经订阅了这个定期调用的类方法,并使用performSelector来调用它。

EventEntry + Extended.h

@interface EventEntry (Extended)

    + (void)eventEntriesByUser;

@end

EventEntry + Extended.m

@implementation EventEntry (Extended)

    + (void)eventEntriesByUser
    {
        trace(@"%s", __PRETTY_FUNCTION__);
    }

@end

但是当我尝试这样做时,我遇到了崩溃。

[EventEntry performSelector:@selector(eventEntriesByUser)];

...错误

+[EventEntry eventEntriesByUser]: unrecognized selector sent to class 0xbda08

如果我将此方法移动到EventEntry中,它将按预期工作。我也尝试在我调用performSelector的文件中包含EventEntry + Extended.h而没有运气。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

不知何故,目标成员资格在类别文件上被关闭,这就是为什么没有添加方法的原因。我可以删除这个问题。