UITableViewCell <mfmailcomposeviewcontrollerdelegate> crash didReceiveMemoryWarning </mfmailcomposeviewcontrollerdelegate>

时间:2012-08-23 19:10:37

标签: objective-c ios uitableview mfmailcomposeviewcontroller didreceivememorywarning

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

在自定义表格单元格中单击按钮时,我会显示一个带有presentModalViewController的mailController。然后用户可以输入电子邮件或取消,一切正常。

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

  

“ - [CustomCell respondsToSelector:]:发送到解除分配的实例0xf4988b0的消息”

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

1 个答案:

答案 0 :(得分:1)

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

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