聊天应用,分配问题。 Xcode 中的自定义类初始化错误(EXC_BAD_ACCESS 代码=2)
Posted
技术标签:
【中文标题】聊天应用,分配问题。 Xcode 中的自定义类初始化错误(EXC_BAD_ACCESS 代码=2)【英文标题】:Chat App, allocation issue. Error on custom class initialization in Xcode (EXC_BAD_ACCESS code=2) 【发布时间】:2015-06-25 15:14:47 【问题描述】:在我尝试创建自定义类 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 失败。否则,我认为我永远不会释放实例记录...
什么是错误?我的线程到底对应什么,解决这些问题的常用方法是什么?如果您需要更多信息,我很乐意提供。非常感谢!
【问题讨论】:
崩溃在哪一行? 你的第二种方法 -(id)initWithPeerID:message:direction;正在自称..... 【参考方案1】:initWithPeerID
方法调用自身——我猜是在无限循环中。
你可能是说
- (id)initWithPeerID:(NSString *)peerID message:(NSString *)message direction:(NSString*)direction
return [self initTranscriptWithID:peerID message:message direction:direction];
【讨论】:
"initTranscriptWithPeerID" -> "initTranscriptWithID" 你说得对,菲利普,谢谢。该死的复制和粘贴。我把它固定在上面 小错误,但我觉得我根本无法发现!非常感谢您的帮助以上是关于聊天应用,分配问题。 Xcode 中的自定义类初始化错误(EXC_BAD_ACCESS 代码=2)的主要内容,如果未能解决你的问题,请参考以下文章
XCode 6.3 错误:Interface Builder 文件中的未知类