Immer eine schwache Selbstreferenz in den Block in ARC übergeben?

Ich bin etwas verwirrt über die Blockverwendung in Objective-C. Ich verwende derzeit ARC und habe eine ganze Reihe von Blöcken in meiner App, auf die ich mich derzeit immer bezieheself anstelle seiner schwachen Referenz. Möge dies die Ursache dafür sein, dass diese Blöcke erhalten bleibenself und verhindern, dass die Zuordnung aufgehoben wird? Die Frage ist, sollte ich immer eine verwendenweak Referenz vonself in einem Block?

-(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);
    }
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage