0

我有一个自定义 UITableViewCell 扩展 UITableViewCell 并实现MFMailComposeViewControllerDelegate. (即UITableViewCell<MFMailComposeViewControllerDelegate>)。

当在自定义表格单元格中单击按钮时,我会呈现一个带有presentModalViewController. 然后用户可以键入电子邮件或取消,一切正常。

但是当didReceiveMemoryWarningmailController 存在时被调用,然后当 mailController 关闭时,应用程序崩溃。我收到此错误:

“-[CustomCell respondsToSelector:]: 消息发送到已释放实例 0xf4988b0”

现在我很确定它是因为拥有 tablecell 的表视图已被释放,因此单元格已被释放,但有没有人有任何建议来解决这个问题?我的意思是我想我可以将 MailCompose 委托切换到表格单元格的表格视图的视图控制器,但我宁愿不这样做。我宁愿把它放在表格单元格中。有任何想法吗?

4

1 回答 1

1

您不应该将表格视图单元格用作 MFMailComposeViewControllerDelegate。由于单元格的性质及其重用,很难将特定实例固定为委托,尤其是在显示单元格的视图控制器之上的视图控制器的委托,在这种特殊情况下,内存警告可能会导致单元缓存的刷新。

MFMailComposeViewControllerDelegate 应该是单元格所在的表视图的委托。这也是一种更好的 MVC 模式。

于 2012-08-23T19:19:41.497 回答