聊天应用,分配问题。 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 文件中的未知类

无法在新的自定义类 Xcode 11 中连接到 IBOutlet

Xcode Playground 中的自定义字体

XCode故事板中的自定义静态表格单元格?

IOS 为啥一个视图有2个自定义类?