我遇到了一个非常有趣的情况,不知道如何解决它。我将首先概述我的程序的架构。我有一个UITableViewController派生类,它也实现了我的委托协议。此表视图中的单元格是自定义单元格,并且每个单元格都具有委托(表格视图控制器)的强(赋值)类型属性。委托处理一些UI动作。
要重现崩溃,我会加载表视图,然后离开它。通常这里表视图将被释放,但在我的情况下,单元格仍然保持对它的强引用,因此它保留在内存中。问题是,在此之后内存警告到达设备时,我遇到了崩溃。我扣除了以下情况:
我该如何解决这种情况?
PS:显然我不使用ARC答案 0 :(得分:3)
当您设置委托时,您应该分配它,而不是保留它(因此单元格的释放不应该向表视图控制器发送释放消息)。
委派对象不会(也不应该)保留其委托。 但是,委托对象(通常是应用程序)的客户端是 负责确保他们的代表即将接收 授权消息。为此,他们可能必须保留代表 在内存管理的代码中。此预防措施同样适用于数据 来源,通知观察员和行动目标消息。注意 在垃圾收集环境中,引用 委托很有力,因为保留周期问题不适用。