У меня проблема с этим кодом. В основном я хочу выполнить fwrite из функции таймера асинхронно.
Вот кодовый блок в моей функции таймера. (Это будет вызываться таймером каждые 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, в который он должен записать проходящий буфер в файл.
Я добавил этот код в метод «start» метода 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, пока он не запишет буфер в файл.
и производительность кажется такой же, как и непосредственное размещение fwrite в timerFunction.
Я хочу просто вернуться к timerFunction без ожидания завершения выполнения метода запуска.
Что я здесь не так делаю?
Заранее спасибо
Raghu