【发布时间】:2014-06-26 11:10:45
【问题描述】:
我需要在两个块中执行相同的一堆代码(我正在使用 ARC):
__weak typeof(self) weakSelf = self;
[_dataProvider doA:^(NSError *error) {
[weakSelf handleError:error];
}];
我在另一个地方打电话:
__weak typeof(self) weakSelf = self;
[_dataProvider doB:^(NSError *error) {
[weakSelf handleError:error];
}];
然后我有我的处理程序:
- (void)handleError:(NSError *)error {
[self.refreshControl endRefreshing];
[self.tableView reloadData];
}
这样使用省钱吗?请注意handleError: 方法在内部使用self。如果不是,那么这里的正确方法是什么?顺便说一句:self 是一个 viewController,可以解除分配(doB: 和 doA: 块是基于网络的,所以可能很慢)。
【问题讨论】:
-
你是什么意思使用安全?它不会炸毁你的设备...所以,是的,在那个视图中它是安全的。
-
这不是“完全”安全的,请看我的回答。
标签: objective-c block retain-cycle