Sempre passe referência fraca de si mesmo em bloco no ARC?

Estou um pouco confuso sobre o uso do bloco no Objective-C. Atualmente uso o ARC e tenho muitos blocos no meu aplicativo, atualmente sempre me referindo aself em vez de sua referência fraca. Que essa seja a causa desses blocos manteremself e impedi-lo de ser desalocado? A questão é, devo sempre usar umweak referência deself em um bloco?

-(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