Проблема отмены операции - PullRequest
       14

Проблема отмены операции

1 голос
/ 05 августа 2011

У меня проблема. В моей программе мне нужно отменить операции (подкласс NSOperation) в очереди после нажатия на кнопку. Но когда я звоню [queue cancelAllOperations], ничего не происходит. Очередь продолжает выполняться. Все операции должны быть параллельными. Что я делаю не так?

 @interface SearchOperation : NSOperation 
{
TrueSearcherViewController *viewController;
SearchYouTube *you_search;
SearchGoogle *goo_search;
BOOL semafore;
}

- (id)initYoutubeTaskWithData:(SearchYouTube *) sy;
- (id)initGoogleTaskWithData:(SearchGoogle *) sg; 
- (void) beginYoutubeSearch:(SearchYouTube *) sy;
- (void) beginGoogleSearch:(SearchGoogle *) sg;
@end


#import "SearchOperation.h"

@implementation SearchOperation

- (void) start
{
if (semafore == YES)
    {
        [self beginYoutubeSearch:you_search];
    }
    else 
    {
        [self beginGoogleSearch:goo_search];
    }
}

- (id)initYoutubeTaskWithData:(SearchYouTube *) sy 
{
if (self = [super init])
{
    you_search = sy;
    semafore = YES;
}
return self;
}

- (id)initGoogleTaskWithData:(SearchGoogle *) sg
{
if (self = [super init])
{
    goo_search = sg;
    semafore = NO;
}
return self;
}


- (void) beginYoutubeSearch:(SearchYouTube *) sy
{
[sy runSearch];
}


- (void) beginGoogleSearch:(SearchGoogle *) sg
{
[sg runSearch];
}

- (void) dealloc
{
[super dealloc];
}

@end

1 Ответ

2 голосов
/ 24 августа 2011

Вам нужно проверить свой код, если ваша операция отменена, чтобы прервать его с помощью:

if(self.isCancelled){
return;
}
...