在块中调用方法?

时间:2012-03-23 07:26:14

标签: iphone ios objective-c-blocks

我是ARC的新手。我想在一个完整的块中调用一个方法,但是我得到了警告:在这个块中强烈捕获'self'可能会导致保留周期。。代码:

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

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

有什么建议吗?感谢。

2 个答案:

答案 0 :(得分:2)

尝试

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

答案 1 :(得分:0)

改为弱引用:

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

我认为这会有效,但我还没有验证过。