2016-01-27 1 views
-3

Я просто изучаю Objective C и столкнулся с этой проблемой. Я создал простой класс менеджера, как такПочему я получаю сообщение об ошибке «Unrecognized selector sent to instance error»

#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:]: unrecognized selector sent to instance 0x7fd12a413d30 2016-01-27 16:40:41.560 MessyApp[19395:897750] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PassManager initWithConfiguration:]: unrecognized selector sent to instance 0x7fd12a413d30'".

Что я делаю неправильно ?

+0

1. Обновите свой вопрос с полным и точным сообщением об ошибке. 2. Укажите, какая строка кода вызывает ошибку. – rmaddy

+1

, вы должны всегда проверять, что блок не 'nil' перед вызовом. Ошибка, которую вы получаете, связана с чем-то еще. – Hamish

+0

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' – John

ответ

0

После разговора с originaluser2 он показал мне, что Wa что-то другое вызывает проблему. Я использовал библиотеку под названием Parse, которая требовала кода запуска в классе appdelegate, и это было то, что взорвалось. Однажды он показал мне, что я посмотрел, что еще я сделал, и понял, что создал класс под названием ParseManager, который вызывал какой-то конфликт имен. Я изменил название этого класса и, конечно же, все это начало работать. Плохой вопрос с моей стороны, я боюсь, но я новичок в этой платформе

0

Ну, ошибка говорит все, где-то в вашем коде вы вызываете метод initWithConfiguration на PassManager, но у вас нет этого метода в вашем классе PassManager, поэтому он генерирует исключение.

Либо добавить метод и реализовать его в PassManager классе, или если вы хотите, чтобы поймать именно там, где это происходит (и не хотят, чтобы найти все вхождения initWithConfiguration.

Вы могли бы пойти Breakpoint Navigator нажатием CMD+7, а затем на нижней нАЖМИТЕ + знак и добавить Exception Breakpoint, запустить приложение и ждать его, чтобы стрелять.

Успехов.

+0

OP нашел ответ на свой вопрос, это было связано с конфликтом имен классов с API-интерфейсом. – Hamish