3

。H

#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

#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

当我打电话时:

[Reminders setRemindersForPerson: p];

这总是很好。当我打电话时:

[Reminders setEightDayReminder];

我得到:

+[Reminders setEightDayReminder]: unrecognized selector sent to class 0xe1b58

此外,[Reminders setRemindersForPerson:];通话[Person setEightDayReminder]没有任何问题。构建良好,并且命令单击 XCode 中的功能会显示它。我认为一切都井井有条,因为它将我带到了适当的地方。

一定是遗漏了什么明显的东西?!把我的头发拉出来。

4

2 回答 2

2

我遇到了一个非常相似的问题,原因是我有一个类别,我忘记在 @implementation 块中指定类别,从而有效地用“新”实现覆盖了原始实现。

因此,如果您在 SomeClass 类上有一个 MyCategory 类别,请确保其实现如下所示:

@interface SomeClass (MyCategory) ...

喜欢

@interface SomeClass ...
于 2014-04-29T13:01:01.167 回答
1

有一种简单的调试方法 - 在那里放置一个断点并观察发生了什么。

请参阅在 Xcode 中为无法识别的选择器创建断点如何为无法识别的选择器创建断点。你的堆栈跟踪应该告诉你你需要知道的一切。

可能您也应该添加您的调用代码。

于 2012-11-28T11:07:34.063 回答