我的应用程序正常运行,直到我尝试创建自定义类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失败。否则,我不会认为我要取消分配实例记录......
错误是什么?我的线程完全对应什么以及解决这些问题的常用方法是什么?如果您需要更多信息,我很乐意提供。非常感谢你!
答案 0 :(得分:0)
方法initWithPeerID
调用自身 - 我想是在无限循环中。
你可能意味着
- (id)initWithPeerID:(NSString *)peerID message:(NSString *)message direction:(NSString*)direction
{
return [self initTranscriptWithID:peerID message:message direction:direction];
}