关于for循环中调用 dispatch_group_async
我有这样一个需求:
-(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中调用????