我有這個代碼的問題。基本上我想執行定時器函數異步的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