我想使用这部分代码从后台线程更新表
__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调用的块-是我的自定义后台线程类的实例。
要清除此方法,方法如下://在线程内部编码if(handlerBase_inner){handlerBase_inner(ndx ++); }
因此,[self_tableB setNumberOfRows: ndx_t withRowType:TABLEELEMENT];
我可以看到EXC_BAD_ACCESS
。为什么?是什么
我担心self_tableB。我不确定您是否要强烈引用它,人为地使其保持活动状态可能会导致其指向其委托的指针悬空。
__block __weak typeof(self.tableB) self_tableB = self.tableB;
添加一个弱注释可能会达到目的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句