Правилен начин за достъп до супер в блока за завършване

Имам подклас на NSOperation, който изпраща заявка за отмяна по мрежа. Искам да отменя операция само ако заявката е била успешна:


// overrider cancel of NSOperation
-(void)cancel{
 [NSURLConnection sendAsynchronousRequest:request 
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
       [super cancel];
    }];
}

Това ще доведе ли до някакъв цикъл на запазване или нещо подобно? Имам ли нужда от слаб Super (използвам ARC)


person Kunal Balani    schedule 14.11.2013    source източник


Отговори (1)


Няма да създаде цикъл на запазване, вашето копие не съдържа силна препратка към блока за завършване. Въпреки това бих предпочел да не извиквам изпълнението super по този начин, може би нещо подобно

-(void)cancelAfterRequest 
{
    [NSURLConnection sendAsynchronousRequest:request 
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
         [self cancel];
    }];
}
person jbat100    schedule 14.11.2013