не может инициировать объект класса Objective C - PullRequest
0 голосов
/ 11 мая 2011

Мне нужно вызвать метод, который был определен в том же классе. Я вызываю метод initiateSession из функции A.

-(BOOL)intitiateSession
{
 //stmts
 return YES;
}
-(BOOL)A
{
 if([self initiateSession])
 {
  //stmts
 }
 return YES;
}

получая ошибку времени выполнения,

Завершение приложения из-за необработанного исключения

не может инициализировать объект класса

РЕДАКТИРОВАНИЕ:

@implementation Data
-(BOOL)initiateSession
{
NSLog(@"I am into the initiateSession!!");
return YES;
}
-(BOOL)getNHPData{
        NSLog(@"In getNHPData!!");
        if([self initiateSession])
                   {
                       NSLog(@"I am into the session");
                   }
     return YES;
}
@end

Здесь, в цикле if, я вызову функцию. Выполните функцию, и если функция

выполняется в true, я попал в область. Я не смог вызвать одну функцию из

другая функция.

Ответы [ 3 ]

3 голосов
/ 11 мая 2011

getNHPData() не является инициализатором и не должен вызывать [super init].Это то, что вы бы назвали из своего собственного инициализатора.Ваш код, как написано, даже не скомпилируется (ваша строка @implementation неверна).В приведенном выше коде вы, конечно, получаете много предупреждений, которые вам следует прослушивать (в одном случае вы возвращаете self из метода BOOL, а в другом случае нет return).Ваша настоящая ошибка говорит о том, что вы делаете что-то вроде [Data getNHPData], что недопустимо, поскольку getNHPData является методом экземпляра.Вы также должны получать предупреждения об этом.

Сначала очистите все свои предупреждения.Это, вероятно, заставит вас двигаться в правильном направлении.Cocoadevcentral имеет краткое введение по всем вопросам, с которыми вы сталкиваетесь.

1 голос
/ 24 января 2012

Всегда выполняйте вызов super init, когда вы переопределяете init в вашем классе.

1 голос
/ 11 мая 2011

Вам нужно позвонить [super init] при перезаписи -(id) init.

См. № 3 и # 6 здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...