我有一个使用Multipeer Connectivity的应用程序,可以将一个字符串从一个iOS设备发送到另一个iOS设备。它有效且无效。
该应用程序几乎就是此链接教程中的应用程序:http://www.appcoda.com/intro-multipeer-connectivity-framework-ios-programming/
有时候,应用会发送大约30条消息然后崩溃,有时候,它会在第1条或第2条消息上崩溃。
Xcode正在为我提供EXC_BAD_ACCESS崩溃。
我使用NSZombie提供了一些帮助,它为我提供了以下内容,但我相当新,无法理解崩溃背后的原因。
我的崩溃归因于NSDictionary,我的申请中只有2个:
-(void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state{
NSDictionary *dict = @{@"peerID": peerID,
@"state" : [NSNumber numberWithInt:state]
};
[[NSNotificationCenter defaultCenter] postNotificationName:@"MCDidChangeStateNotification"
object:nil
userInfo:dict];
}
-(void)session:(MCSession *)session didReceiveData:(NSData *)data fromPeer:(MCPeerID *)peerID{
NSDictionary *dict = @{@"data": data,
@"peerID": peerID
};
[[NSNotificationCenter defaultCenter] postNotificationName:@"MCDidReceiveDataNotification"
object:nil
userInfo:dict];
}
有什么建议吗?
答案 0 :(得分:-1)
当您尝试访问任何已解除分配的对象时,通常会出现僵尸。
如果您正在使用ARC,那么您不必担心僵尸,X代码会为您做到这一点,但在某些情况下僵尸也会进入ARC项目。我从未遇到过这种问题。
如果您使用的是非ARC项目,则需要手动取消分配对象。
正如您的错误消息所示,您已经使用了尚未分配或取消分配的字典对象,并且您正在尝试再次使用它。
如果您想查看僵尸的位置,请点击警告信息后显示的箭头。您将被重定向到导致您的僵尸的线路。
请根据此更新您的代码。
希望这会对你有所帮助。