聊天应用,分配问题。 Xcode中自定义类初始化出错(EXC_BAD_ACCESS代码= 2)

时间:2015-06-25 15:14:48

标签: ios objective-c xcode initialization release

我的应用程序正常运行,直到我尝试创建自定义类Transcript的实例。我的问题是来自初始化方法还是我分配指针的方式?我很困惑,因为应用程序没有崩溃。信号(lldb)出现在调试区域中,而我的初始化程序的声明行以绿色下划线,并带有以下消息:

Thread 1: EXC_BAD_ACCESS (code=2, address=0xbf7ffffc)

以下是我班级的完整实施:

- (id)initTranscriptWithID:(NSString *)peerID message:(NSString *)message  direction:(NSString *)direction {
if (self = [super init]) {
    _peerID = peerID;
    _message = message;
    _direction = direction;
}
return self;
}

- (id)initWithPeerID:(NSString *)peerID message:(NSString *)message direction:(NSString*)direction
{
return [self initWithPeerID:peerID message:message direction:direction];
}

在视图控制器中以下列方式调用此初始化程序,messageSent是同一视图控制器的属性:

Transcript* transcript = [[Transcript alloc]initWithPeerID:    [self.messageReceived objectForKey:@"senderId"] message:[self.messageSent objectForKey:@"content"] direction:@"right"];

我非常确定我在视图控制器中正确创建了Transcript实例,但是,我的初始化程序的声明是否存在问题? 我试图使用NSZombieEnabled失败。否则,我不会认为我要取消分配实例记录......

错误是什么?我的线程完全对应什么以及解决这些问题的常用方法是什么?如果您需要更多信息,我很乐意提供。非常感谢你!

1 个答案:

答案 0 :(得分:0)

方法initWithPeerID调用自身 - 我想是在无限循环中。 你可能意味着

- (id)initWithPeerID:(NSString *)peerID message:(NSString *)message direction:(NSString*)direction
{
return [self initTranscriptWithID:peerID message:message direction:direction];
}