-(voID)comThread:(ID)arg { while(state == kIsConnected) { // let timers run [runLoop runUntilDate:[NSDate distantFuture]]; // handle data if(rxTxState == kRx) { // do some stuff to pass data to upper layers rxTxState = kTx; } if(rxTxState == kTx) { // do some stuff to send data rxTimeoutTimer = [NSTimer scheduledTimer....]; } } }
在发送数据之后,应用程序等待接收数据或者触发rxTimeoutTimer,这导致数据包的重传. rx *** 作有效,因为底层使用异步系统调用并调用一个看起来基本像这样的rx处理程序.
-(voID)receiveData:(NSData*)data{ [rxQueue addobject:data]; [rxTimeoutTimer invalIDate]; // cancel timeout}
有没有(简单)方法使[runLoop runUntilDate:]退出receiveData:? Apple文档说删除所有计时器源并不能保证RunLoop退出.我读了一些关于调用performSelector的内容:onThread:…但它要么不起作用,要么我没有明白这一点.
谢谢.
解决方法CFRunLoopStop([runLoop getCFRunLoop]);@H_403_2@ 总结
以上是内存溢出为你收集整理的cocoa – 如何退出[NSRunLoop runUntilDate]?全部内容,希望文章能够帮你解决cocoa – 如何退出[NSRunLoop runUntilDate]?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)