Проблема отмены NSOperation

У меня проблема. В моей программе мне нужно отменить операции (подкласс 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

person Raziel    schedule 05.08.2011    source источник


Ответы (1)


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

if(self.isCancelled){
return;
}
person jul    schedule 24.08.2011
comment
Точно! Я также рекомендую прочитать этот документ: developer.apple.com/library/ ios / # technotes / tn2109 / _index.html - person Ricardo; 27.01.2012