Xcodeによって自動生成されるEventEntryというNSManagedObjectサブクラスがあり、触れないようにしています(モデルを変更して再生成したい場合)。そこで、追加機能を EventEntry+Extended というカテゴリに入れました。
そのような機能の 1 つに、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 を含めようとしました。何か案は?