Subclassing NSOperation gleichzeitig und kündbar sein
Ich kann keine gute Dokumentation zum Unterklassen von @ findeNSOperation
gleichzeitig sein und auch die Kündigung unterstützen. Ich habe die Apple-Dokumente gelesen, kann aber kein "offizielles" Beispiel finden.
Hier ist mein Quellcode:
@synthesize isExecuting = _isExecuting;
@synthesize isFinished = _isFinished;
@synthesize isCancelled = _isCancelled;
- (BOOL)isConcurrent
{
return YES;
}
- (void)start
{
/* WHY SHOULD I PUT THIS ?
if (![NSThread isMainThread])
{
[self performSelectorOnMainThread:@selector(start) withObject:nil waitUntilDone:NO];
return;
}
*/
[self willChangeValueForKey:@"isExecuting"];
_isExecuting = YES;
[self didChangeValueForKey:@"isExecuting"];
if (_isCancelled == YES)
{
NSLog(@"** OPERATION CANCELED **");
}
else
{
NSLog(@"Operation started.");
sleep(1);
[self finish];
}
}
- (void)finish
{
NSLog(@"operationfinished.");
[self willChangeValueForKey:@"isExecuting"];
[self willChangeValueForKey:@"isFinished"];
_isExecuting = NO;
_isFinished = YES;
[self didChangeValueForKey:@"isExecuting"];
[self didChangeValueForKey:@"isFinished"];
if (_isCancelled == YES)
{
NSLog(@"** OPERATION CANCELED **");
}
}
In dem Beispiel, das ich gefunden habe, verstehe ich nicht, warum performSelectorOnMainThread: verwendet wird. Es würde verhindern, dass meine Operation gleichzeitig ausgeführt wird.
Auch wenn ich diese Zeile auskommentiere, werden meine Operationen gleichzeitig ausgeführt. DasisCancelled
flag wird nicht geändert, obwohl ich @ aufgerufen hacancelAllOperations
.