我真的很努力理解从基于ARC-项目自定义tableViewCell内存泄漏和希望有人也许能够揭示一些轻若以下可能负责,或者我完全吠叫了错误的树。基本建议
所以,我推着tableViewController到navigationController和TableView中,我有我自己的自定义tableViewCells。
这种风俗tableViewCell具有从的cellForRowAtIndexPath和分换句话说分配给tableViewController本身,所以委托财产......
cell.delegate = self;
这种风俗tableViewCell也有一对夫妇的通知中心观察员。现在
,我已经把代码以去除tableViewCell的dealloc的观察员和同样去加...
self.delegate = Nil;
...才发现的dealloc没有以前任何时候都被称为,即使在点击返回时(例如,通过推送的tableViewContoller有效地返回导航堆栈)。
所以,我想这可以归结为:既可以的细胞的这些方面导致泄漏?如果是这样,我是否要以正确的方式停止泄漏?
编辑:我定义我的委托属性如下:
@property (nonatomic, retain) MyTableViewController *delegate;
的Une仪器找出你泄露了什么(或者超过保留),并从那里。代表是否保留(通常不应该)。表格视图控制器应该在表格视图告诉它不再显示单元格时移除它自己。 – Wain
这可能有助于了解如何在自定义单元视图中定义代理iVar。但是,由于性能的原因,要知道'UITableViewCell'可以被回收(通过'initWithStyle:reuseIdentifier:'和'dequeueReusableCellWithIdentifier:')。如果表格单元格是可重用的,那么在表格视图消失之前,您可能不会立即看到对象的dealloc。 –
好点 - 添加了我的iVar定义。 – bcl