0
我有一个从网络接收数据的类,名为NetWorkConnect。以下方法在NetWorkConnect.m中,这是委托方法。 m_DisplayMarketViewController是类DisplayMarketViewController的一个实例。iphone网络多线程
-(void)stream:(NSStream*)stream handleEvent:(NSStreamEvent)eventCode{
switch (eventCode) {
case NSStreamEventHasBytesAvailable:
{
if (data == nil) {
data = [[NSMutableData alloc] init];
}
uint8_t buf[1024];
unsigned int len = 0;
len = [(NSInputStream *)stream read:buf maxLength:1024];
if(len) {
[data appendBytes:(const void *)buf length:len];
} else {
NSLog(@"No data.");
}
[self storeData:data];
[m_DisplayMarketViewController updateMarket:self];
} break;
default:
break;
}
}
updateMarket经过自我DisplayMarketViewController,所以DisplayMarketViewController可以使用从network.and在DisplayMarketViewController.m文件时我更新数据的数据将被displayed.but接收的数据的方法中,我可以显示数据,但接口似乎有点阻塞,所以我打算使用多线程....但如何去做呢?谢谢。
首先,谢谢你。' - (无效)流:(NSStream *)流的handleEvent:(NSStreamEvent)EVENTCODE;'是委托方法,因此,它是与您的方法 “makeSomethingInBackground” 这个?方法会每秒调用一次,它是否也与您的方法相同? – Gaojian922188
makeSomethingInBackground该方法将在单独的线程中运行,您可以使用“updateMarket”而不是“makeSomethingInBackground” – Andrey
在这里查看一个示例,可以帮助您http://www.cimgf.com/2008/02/16/cocoa -tutorial-nsoperation-and-nsoperationqueue/ – Andrey