作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个表格 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/
我是一名优秀的程序员,十分优秀!