isCancelled
スレッドをキャンセルしていないので、以下のメソッドを正しく実装しているかどうか疑問に思います。スケーリングしている画像があり、スケーリングが完了すると、このメソッドが呼び出されて画像が更新されます。したがって、ユーザーがボタンから指を離すと、これが呼び出されます。これが完了する前に彼らがボタンをもう一度押そうとすると、私cancelAllOperations
はキューを呼び出しますが、それは機能していません。cancelAllOperationsがフラグをトリガーするかどうか、または結果を得るためにそれを呼び出し続ける必要があるかどうかさえわかりません。誰かがこれについて何か洞察を持っていますか?
- (void) refreshImage
{
NSBlockOperation *operation = [[NSBlockOperation alloc] init];
__unsafe_unretained NSBlockOperation *weakOperation = operation;
[operation addExecutionBlock:
^{
UIImage *image = [[self.graphicLayer imageForSize:self.size] retain];
if (![weakOperation isCancelled])
{
[[NSOperationQueue mainQueue] addOperationWithBlock:
^{
self.image = image;
[image release];
}];
}
else
{
[image release];
return;
}
}];
[self.queue addOperation: operation];
[operation release];
}