我有一个表格 View ,与 stackoverflow 非常相似,用户可以选择最佳答案。
我有一个 *answerContainers 的 NSMutableArray,其中包含一个 Answer 对象。
假设这个问题有 10 个答案。提出问题的用户选择第三个答案作为最佳答案。
我发起调用以将答案标记为服务器上的最佳答案,结果是更新后的 Answer 对象,我想在我的完成 block 中操作它。
所以它看起来像这样......
- (void)selectBestAnswer {
for (AnswerContainer *answerContainer in self.answerContainers) {
if (answerContainer.selected) { //can only be 1 selected
Answer *answer = answerContainer.answer;
QuestionDetailTableViewController * __weak weakSelf = self;
[answer markAsBestAnswer:^(BOOL success, id responseObject, NSInteger statusCode, NSArray *messages, NSArray *errors) {
if (success) {
QuestionDetailTableViewController *strongSelf = weakSelf;
Answer *answer = [Answer instanceFromDictionary:responseObject];
[strongSelf replaceAnswerWithAnswer:answer];
[strongSelf reloadTableView];
}
}];
}
}
}
这是我的问题
1) 我是否应该让我的弱者成为整个 Controller ,像这样。还是您通常只针对 answerContainer 执行此操作?
最佳答案
把所有“弱”的东西扔掉。只有在非常特殊的情况下才需要它,即 block 保留 self
并且 self
保留 block ,从而导致保留循环,从而导致 self
泄漏稍后的。您不属于那种情况,所以根本不要使用“弱-强舞蹈”。
关于ios - block 内的强弱。我该如何处理这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31751724/