【发布时间】:2012-07-12 10:28:17
【问题描述】:
我在 tableviewcell (exc_bad_access) 的内存管理上遇到问题。
我的一个 tableviewcell 包括一个加载异步 html 数据(loadHTMLString 方法)的 uiwebview,并且当前控制器被设置为其委托。
当我从导航控制器弹出 tableviewcontroller 太快时,应用程序崩溃。
在我看来,这就是它失败的原因:
- 如果控制器之前的单元释放 => 一切正常,委托仍然有效,我什至可以在其自己的释放方法中将其委托设置为 nil
- 如果在控制器之后单元释放(我猜是因为表视图单元是自动释放的)=> 应用程序崩溃,因为它的委托仍然设置为释放的控制器
知道如何正确解决这个问题吗? 谢谢。。
cellForRowAtIndexPath 中的代码:
...
CustomTableViewCell * cCell = (CustomTableViewCell*)cell;
cCell.myWebView.delegate = self;
[[cCell myWebView] loadHTMLString:html baseURL:baseURL];
....
【问题讨论】:
-
能给个sn-p代码吗?
-
要检查您的猜测,您可以在单元格和 viewController 类
dealloc中添加 NSLog,我确定自动释放的单元格在控制器之前被释放。 -
在调用 cell dealloc 方法中的 NSLOG 之前应用程序崩溃。我猜想自动释放池是在控制器被释放后出现的。显然,当控制器被按下时,我真的非常快地点击返回按钮。如果我评论“[[cCell myWebView] loadHTMLString:html baseURL:baseURL];”一切正常..
-
发布单元格的代码。这里还有其他问题。
标签: ios memory-management uitableview exc-bad-access