无法初始化一个类对象 - Objective C

时间:2011-05-11 12:29:16

标签: objective-c

我需要调用一个已在同一个类中定义的方法。我从函数A调用方法initiateSession。

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

获取运行时错误,

由于未捕获的异常而终止应用

  

无法初始化类对象

EDITED:

@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 个答案:

答案 0 :(得分:3)

getNHPData()不是初始值设定项,不应该调用[super init]。这是您可以在自己的初始化程序中调用的内容。您编写的代码甚至无法编译(您的@implementation行不正确)。你肯定会在上面的代码中收到许多你应该听的警告(你在一个案例中从BOOL方法返回self,而在另一个案例中没有return。您的实际错误表明您正在执行类似[Data getNHPData]的操作,这是不合法的,因为getNHPData是一种实例方法。您也应该收到关于此的警告。

首先,清理所有警告。这可能会让你朝着正确的方向前进。 Cocoadevcentral对您遇到的所有问题都有quick intro

答案 1 :(得分:1)

您需要在覆盖[super init]时调用-(id) init

参见#3和#6 here

答案 2 :(得分:1)

在您的班级中覆盖super init时,请始终进行init来电。