ios - 关于自定义 tableView 单元格中内存泄漏的基本建议

标签 ios uitableview memory-leaks

我真的很难理解基于 ARC 的项目中自定义 tableViewCell 的内存泄漏,并希望有人能够阐明是否以下原因可能是负责任的,或者我是否找错了树完全。

因此,我将 tableViewController 推送到 navigationController 中,在 tableView 中我有自己的自定义 tableViewCells。

这个自定义 tableViewCell 有一个 delegate 属性,它从 cellForRowAtIndexPath 分配并指向 tableViewController 本身,所以换句话说......

cell.delegate = self;

这个自定义的 tableViewCell 也有几个 NotificationCenter 的观察者。

现在,我已经放入代码以删除 tableViewCell dealloc 中的观察者,同样去添加...

self.delegate = Nil;

...只是发现 dealloc 似乎从未被调用,即使在点击返回时(即返回导航堆栈有效地完成推送的 tableViewContoller)。

所以,我想这可以归结为:电池的这些方面是否会导致泄漏?如果是这样,我是否打算以正确的方式阻止泄漏?

编辑:我按如下方式定义我的委托(delegate)属性:

@property (nonatomic, retain) MyTableViewController *delegate;

最佳答案

您需要将您的自定义委托(delegate)声明为

@property (nonatomic, weak) id<MyCustomDelegateProtocol> delegate;

否则你会得到一个强引用循环

controller -> table view -> cell -> controller

注意weak 是 ARC 特有的,如果您不使用 ARC,则需要使用 assign,并确保在完成其委托(delegate)后自行将其 nil 掉。

关于ios - 关于自定义 tableView 单元格中内存泄漏的基本建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22229909/

相关文章:

iphone - 跟踪 UITableViewCells

ios - 点击标签栏项目滚动顶部

ios - NSData dataWithContentsOfURL 泄漏和 datawithContentsOfURL :options:error reports the URL is nil?

ios - 查找和替换术语

ios - UITableViewCell - 发送到实例的无法识别的选择器

iphone - tableView :sectionForSectionIndexTitle:atIndex:? 到底有什么意义

即使在执行删除操作时,perl 内存也会在散列中膨胀?

iOS - 如何检测可能的内存泄漏提示

ios - Google 自动完成功能调用后崩溃

ios - swift 代码在 Xcode 7 中不起作用 - 无法调用初始化程序