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