为什么我收到错误“无法识别的选择器发送到实例错误”

时间:2016-01-27 16:43:56

标签: ios objective-c unrecognized-selector

我刚学习Objective C并遇到过这个问题。我创建了一个简单的经理类,如此

#import <Foundation/Foundation.h>

@interface PassManager : NSObject

- (void)isValidCredentials:(NSString *) username
          withPassword:(NSString *) password
              wasValid:(void(^)(BOOL success))handler;

@end

实施如下

#import "PassManager.h"

@implementation PassManager

- (void)isValidCredentials:(NSString *) username
          withPassword:(NSString *) password
              wasValid:(void(^)(BOOL success))handler
{
    handler(true); 
}

@end

这构建但在运行时我收到错误:

  

“2016-01-27 16:40:41.555 MessyApp [19395:897750] - [PassManager initWithConfiguration:]:无法识别的选择器发送到实例0x7fd12a413d30 2016-01-27 16:40:41.560 MessyApp [19395:897750] * **由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [PassManager initWithConfiguration:]:无法识别的选择器发送到实例0x7fd12a413d30'“。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

错误说明了一切,在您的代码中的某个地方,您在initWithConfiguration上调用了PassManager方法,但您在PassManager课程中没有这种方法,所以它会引发异常。

添加方法并在PassManager课程中实施,或者如果您想准确捕捉到这种情况发生的位置(并且不想搜索initWithConfiguration的所有匹配项

您可以按Breakpoint Navigator转到CMD+7,然后在底部按下+符号并添加Exception Breakpoint,运行该应用并等待其触发

祝你好运。

答案 1 :(得分:0)

在与原始用户2交谈后,他告诉我这是造成问题的其他原因。我正在使用一个名为Parse的库,它需要在appdelegate类中启动代码,而这正是爆炸的内容。一旦他告诉我,我看了看我做了什么,并意识到我创建了一个名为ParseManager的类,它导致某种名称冲突。我改变了这个类名,确定它们都开始工作了。我不好的问题我很害怕,但我是这个平台的新手