1

我想使用这部分代码从后台线程更新表

 __block typeof(self.tableB) self_tableB = self.tableB;
    [lwc setBaseControllerCallback:^(int ndx) {
        __block typeof(ndx) ndx_t = ndx;
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            [self_tableB setNumberOfRows: 0 withRowType:TABLEELEMENT];
            [self_tableB setNumberOfRows: ndx_t withRowType:TABLEELEMENT];
        }];

    }];

在哪里

^(int ndx) {
//...
}

是从后台线程(NSThread)调用的块,lwc - 是我的自定义后台线程类的一个实例。

要清除此方法,调用如下: //code inside thread if (handlerBase_inner) { handlerBase_inner(ndx++); }

所以,在 [self_tableB setNumberOfRows: ndx_t withRowType:TABLEELEMENT]; 我可以看到EXC_BAD_ACCESS。为什么?是什么

4

1 回答 1

1

我担心self_tableB。我不确定您是否想要对其进行强引用,人为地保持它的活动状态可能会导致它有一个悬空指针返回其委托。

__block __weak typeof(self.tableB) self_tableB = self.tableB;

添加一个弱注释可能会成功。

于 2016-08-18T12:13:59.430 回答