我对这段代码有问题。基本上我想从定时器函数异步执行 fwrite。
这是我的 Timer 函数中的代码块。(这将由计时器每 0.2 秒调用一次。
-(void)timerFunction
{
WriteFileOperation * operation =
[WriteFileOperation writeFileWithBuffer:pFile buffer:readblePixels length:nBytes*15];
[_queue addOperation:operation]; // Here it is waiting to complete the fwrite
}
WrtiteFilerOperation 是一个 NSoperation 类,它必须将传递的缓冲区写入文件。我在 WriteFileOperation 的“start”方法中添加了这段代码。
- (void)start
{
if (![NSThread isMainThread])
{
[self performSelectorOnMainThread:@selector(start) withObject:nil waitUntilDone:NO];
return;
}
[self willChangeValueForKey:@"isExecuting"];
_isExecuting = YES;
[self didChangeValueForKey:@"isExecuting"];
NSLog(@"write bytes %d",fwrite(_buffer, 1, _nBytes, _file));
free(_buffer);
[self finish];
}
这里的问题是,我的 timerFunction 被 NSOperation 阻塞,直到它将缓冲区写入文件。(我的意思是阻塞直到 start 方法完成其执行)并且性能似乎与直接将 fwrite 放入 timerFunction 相同。
我只想返回 timerFunction 而无需等待 start 方法执行完成。
我在这里做错了什么?
提前致谢
拉古