我的自定义init方法有什么问题?

时间:2010-05-03 16:05:57

标签: iphone objective-c

在课堂上:

- (ClassA *)initWithID:(NSString *) cID andTitle:(NSString *) cTitle {
    ClassAID = cID;
    ClassATitle = cTitle;
    return self;
}

在课堂上:

- (void)cellDidSelected {
    ClassA *classAController = [[ClassA alloc] init];
//Program received signal:  “EXC_BAD_ACCESS” when executing the following line.
    classAController = [classAController initWithClassAID:ClassAID andClassATitle:ClassATitle];
    NSLog(@"I want to get the value of ID:%@ and Title:%@ here.", [classAController ClassATitle], [classAController ClassAID])
}

有人能指出错在哪里吗? 非常感谢。

2 个答案:

答案 0 :(得分:1)

尝试使用:

- (id)initWithID:(NSString*) cID andTitle:(NSString*) cTitle {

    if (!(self = [super init]))
       return nil;

    ClassAID = cID;
    ClassATitle = cTitle;
    return self;
}

然后你可以做类似的事情:

ClassA * classA = [[ClassA alloc] initWithID:anID andTitle:aTitle];

我建议将ClassAIDClassATitle作为属性,如果它们还没有,如果它们是你应该使用的话:

[self setClassAID:cID];
[self setClassATitle:cTitle];

这样他们就会被妥善保留。

答案 1 :(得分:0)

通常,根据您上面发布的情况设计的结构将包括[super init]本身内initWithID的调用,因此每个对象只调用一个init例程实例。但是,我不认为这是你所看到问题的根本原因。