[英]App crashing when writing to NSOutputStream gotten from NSNetService object
我正在尝试理解和修改WiTap示例iPhone应用程序(工作正常)。 在修改代码时,我能够使两个设备相互定位并解析NSNetService对象,然后在其上调用getInputStream:outputStream
来创建NSInputStream
和NSOutputStream
对象。
问题是,当我尝试从一个设备送东西到另一个使用NSOutputStream
,发送应用程序立即崩溃,即使接收应用程序成功获取该消息并显示UIAlert
。
这是我用来发送的代码:
NSString *str = [[NSString alloc] initWithString:@"teststring7"];
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
[str release];
[outStream write:[data bytes] maxLength:[data length]];
[data release];
我已经尝试了释放或不释放或保留或不保留这些各种对象的所有可能组合,但似乎没有任何效果-发送应用每次都崩溃。
我对原始示例所做的更改之一是使我的应用程序委托的流属性如下所示:
@property (nonatomic, retain) NSInputStream *inStream;
@property (nonatomic, retain) NSOutputStream *outStream;
这可能是我的应用崩溃的原因吗?
我试过将发送代码包装在try / catch块中,但这不能防止崩溃。
更新:这是回溯(对字体的丑陋性很抱歉-我认为这是来自每行前面的井号):
线程4(线程13059):
线程3(线程12803):
线程2(线程12291):
线程1(线程11523):
删除[data release];
,您正在将data
创建为自动发布的对象,因此您不应发布它。
从stacktrace我猜问题是字节数组不见了-只要outStream
正在发送data
,您可能根本不应该释放数据。 释放data
,其字节数组也将消失。
如果没有帮助,请在此处阅读有关调试此类问题的答案: UITextView代表问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.