我正在努力理解和修改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):
0 0x33bb32e4在select$DARWIN_EXTSN()
1 0x357a7426 in\uU CFSocketManager()
2 0x33c14684 in_pthread_start()
3 0x33c06014 in线程启动()
螺纹3(螺纹12803):
0 0x33b89e70在mach_msg_陷阱中()
1 0x33b8c35c,机器消息()
\u CFRunLoopServiceMachPort()中的2 0x3576e7ee
CFRunLoopRunSpecific()中的4 0x3576dd7a
CFRunLoopRunInMode下的5 0x3576dc88()
7 0x33c14684 in_pthread_start()
8 0x33c06014线程开始()
螺纹2(螺纹12291):
kevent中的0 0x33bbe34c()
调度管理器invoke()中的1 0x33c8c770
_dispatch_queue_invoke()中的2 0x33c8c1bc
3 0x33c8c35c in _dispatch_worker_thread2()
4 0x33c14c40 in_pthread_wqthread()
起始线程()中的5 0x33c0bb6c
objc_msgSend()中的0 0x35107420
1 0x35750c74 in CFRelease()
2个0x35750162 in_CFAutoreleasePoolPop()
3 0x3093e664 in-[NSAutoreleasePool release]()
4 0x31969130 in\u UIApplicationHandleEvent()
5 0x336adde0紫色EventCallback()
6 0x3577be46英寸
CFRUNLOOP_是_调用_OUT_以执行源1_PERFORM_函数
()
7 0x3577be04在\u CFRunLoopDoSource1()
8 0x3576e0a4,在\uu CFRunLoopRun()中
CFRunLoopRunSpecific()中的9 0x3576dd7a
CFRunLoopRunInMode下的10 0x3576dc88()
GSEventRunModal()中的11 0x336ace8c
12 0x318f0f94输入-[UIApplication\u运行]()
UIApplicationMain()中的13 0x318ee4d4
main中的14 0x00002444(argc=1,argv=0x2fff5c0),地址为/Users/kenadams/Documents/WalkyTalkyX/main.m:14