мне нужно выполнить ту же кучу кода в двух блоках (я использую 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
внутри. Если нет, то какой здесь подход? BTW: self является viewController и может быть освобожден (doB: и doA: блоки основаны на сети, поэтому могут быть медленными).
Как вы относитесь к его безопасному использованию? это не повредит ваше устройство ... так что да, это безопасно в этом плане. – holex
Это не «полностью» безопасно, см. Мой ответ. – samir