вызвать метод в блоке? - PullRequest
2 голосов
/ 23 марта 2012

Я новичок в ARC. Я хочу вызвать метод в полном блоке, но получаю предупреждение: Сильный захват себя в этом блоке может привести к циклу сохранения. . Код:

- (void) handlerComplete
{
    //...
}

- (void) loadData
{
    ...
    operation.completeBlock = ^(NSInteger index) {
        [self handlerComplete];
    };
}

Любой совет? Спасибо.

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Попробуйте с

- (void) loadData
{
    __weak MyClassType *myClass = self;
    operation.completeBlock = ^(NSInteger index) {
        [myClass handlerComplete];
    };
}
0 голосов
/ 23 марта 2012

Вместо этого сделайте слабую ссылку:

operation.completeBlock = ^(NSInteger index) {
    __weak Foo *bar = self;
    [bar handlerComplete];
};

Я думаю, что это будет работать, хотя я не проверял это.

...