我有这个代码的问题。基本上我想执行定时器函数异步的fwrite。NSOperation和fwrite(Iphone)
这是我的定时器功能中的代码块。 (这将通过定时器每隔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的“开始”方法加入此代码。
- (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,直到它写入缓冲区中的文件。(我的意思是封锁,直到启动方法完成其执行) 和表现似乎一样直接放置在timerFunction和fwrite。
我想只是返回timerFunction而不用等待start方法执行完成。
我在做什么错在这里?
在此先感谢
Raghu