unrecognized selector sent to class - for static method with no parameters
H
1 2 3 4 5 6 7 8 9 10 11 12 | #import <Foundation/Foundation.h> #import"Person.h" extern NSString *const kRemindersWeekly; extern NSString *const kRemindersDaily; @interface Reminders : NSObject +(void)setRemindersForPerson: (Person*) person; +(void)setEightDayReminder; @end |
?m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #import"Reminders.h" @implementation Reminders NSString *const kRemindersWeekly = @"WEEKLY"; NSString *const kRemindersDaily = @"DAILY"; + (void) setRemindersForPerson: (Person*) person { // some code } +(void)setEightDayReminder { // some more code } @end |
当我呼叫:
1 | [Reminders setRemindersForPerson: p]; |
这个工厂总是好的。当我呼叫:
1 | [Reminders setEightDayReminder]; |
我得到的:
1 | +[Reminders setEightDayReminder]: unrecognized selector sent to class 0xe1b58 |
也没有任何问题,
丢失的东西必须是明显的?!!!!!!!我的头发拉出来。
我遇到了一个非常类似的问题,原因是我有一个类别,在这个类别中,我忘记在@implementation块中指定类别,有效地用"new"替代了原始实现。
因此,如果在类SomeClass上有一个类别MyCategory,请确保其实现如下所示:
1 | @interface SomeClass (MyCategory) ... |
而不是像:
1 | @interface SomeClass ... |
调试它有一个简单的方法——在那里放置一个断点并观察正在发生的事情。
有关无法识别的选择器,请参见在Xcode中创建断点。如何为无法识别的选择器创建断点。您的堆栈跟踪应该告诉您需要知道的一切。
也许您也应该添加您的调用代码。