Zawsze przekazuj słabe referencje self do bloku w ARC?

Jestem trochę zdezorientowany co do użycia bloku w Objective-C. Obecnie korzystam z ARC i mam sporo bloków w mojej aplikacji, do których zawsze się odwołujęself zamiast słabego odniesienia. Może to jest przyczyną zatrzymania tych blokówself i powstrzymanie go przed zwolnieniem? Pytanie brzmi, czy zawsze powinienem używaćweak odniesienie doself w bloku?

-(void)handleNewerData:(NSArray *)arr
{
    ProcessOperation *operation =
    [[ProcessOperation alloc] initWithDataToProcess:arr
                                         completion:^(NSMutableArray *rows) {
        dispatch_async(dispatch_get_main_queue(), ^{
            [self updateFeed:arr rows:rows];
        });
    }];
    [dataProcessQueue addOperation:operation];
}

ProcessOperation.h

@interface ProcessOperation : NSOperation
{
    NSMutableArray *dataArr;
    NSMutableArray *rowHeightsArr;
    void (^callback)(NSMutableArray *rows);
}

ProcessOperation.m

-(id)initWithDataToProcess:(NSArray *)data completion:(void (^)(NSMutableArray *rows))cb{

    if(self =[super init]){
        dataArr = [NSMutableArray arrayWithArray:data];
        rowHeightsArr = [NSMutableArray new];
        callback = cb;
    }
    return self;
}

- (void)main {
    @autoreleasepool {
        ...
        callback(rowHeightsArr);
    }
}

questionAnswers(6)

yourAnswerToTheQuestion