我有这样一个需求:-(void) DoDataFromSeverBuf:(char*)cBuf len:(unsigned long)ulDataLength { //省略 主要是解析服务端数据
}
-(void) HandleServerData(){ dispatch_queue_t queue = dispatch_queue_create("cn.com.test",DISPATCH_QUEUE_SERIAL); while(true){ unsigned char szBuf[MAX_LENGTH] = {};
unsigned int nRecved = -1;
unsigned long ulBufferLen = 0;
nRecved = GetDataFormServer(szBuf);//从服务端拿数据
dispatch_async(queue,^{
[self DoDataFromSeverBuf:szBuf len:nRecved];
});
}}
需要把每次从服务端读取的数据放到一个队列里去处理,但在实际跟踪调试的时候,发现szBuf的值为空,居然没取到值。但实际上从调用GetDataFormServer的跟踪调试的时候,szBuf是有值的,但为什么传给队列的block后,就没有值了呢?
难道dispatch_async 这样的函数,不能在for或while中调用????
}
-(void) HandleServerData(){ dispatch_queue_t queue = dispatch_queue_create("cn.com.test",DISPATCH_QUEUE_SERIAL); while(true){ unsigned char szBuf[MAX_LENGTH] = {};
unsigned int nRecved = -1;
unsigned long ulBufferLen = 0;
nRecved = GetDataFormServer(szBuf);//从服务端拿数据
dispatch_async(queue,^{
[self DoDataFromSeverBuf:szBuf len:nRecved];
});
}}
需要把每次从服务端读取的数据放到一个队列里去处理,但在实际跟踪调试的时候,发现szBuf的值为空,居然没取到值。但实际上从调用GetDataFormServer的跟踪调试的时候,szBuf是有值的,但为什么传给队列的block后,就没有值了呢?
难道dispatch_async 这样的函数,不能在for或while中调用????
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货