Übergeben Sie immer schwache Referenz von Selbst in Block in ARC?

Ich bin ein wenig verwirrt darüber, block-Verwendung in Objective-C. derzeit benutze ich einen BOGEN, und ich habe ganz viele Blöcke in meiner app, die derzeit jeweils bezogen auf self anstatt seine schwache Referenz. Kann das sein, dass die Ursache für diese Blöcke behalten self und halten es davon ab, dealloced ? Die Frage ist, soll ich immer ein weak Referenz self 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);
    }
}

InformationsquelleAutor der Frage the_critic | 2013-11-17

Schreibe einen Kommentar