我有一个自定义UITableViewCell,它扩展了UITableViewCell并实现了MFMailComposeViewControllerDelegate
。 (即UITableViewCell<MFMailComposeViewControllerDelegate>
)。
在自定义表格单元格中单击按钮时,我会显示一个带有presentModalViewController
的mailController。然后用户可以输入电子邮件或取消,一切正常。
但是当mailController存在时调用didReceiveMemoryWarning
,然后当mailController关闭时,应用程序崩溃。我收到这个错误:
“ - [CustomCell respondsToSelector:]:发送到解除分配的实例0xf4988b0的消息”
现在我很确定它,因为拥有tablecell的表视图已被解除分配,因此该单元格已被解除分配,但有没有人有任何建议去解决这个问题?我的意思是我想我可以将MailCompose委托切换到表格单元格的表视图的视图控制器,但我宁愿不这样做。我宁愿把它放在表格单元格中。有什么想法吗?
答案 0 :(得分:1)
您不应该使用表格视图单元格作为MFMailComposeViewControllerDelegate。由于单元格的性质及其重用,很难将特定实例固定为委托,特别是在视图控制器上显示单元格的视图控制器的委托,并且在此特定情况下,内存警告可能会导致刷新单元格的缓存。
MFMailComposeViewControllerDelegate应该是单元格所在的表视图的委托。这也是一个更好的MVC模式。