我知道没有必要保留委托,以避免保留周期。我碰巧在一次采访中遇到了这个问题:“如果保留appDelegate会怎么样?”。我没有回答这个问题,并根据我的知识在这里寻求答案。感谢
答案 0 :(得分:4)
应用程序委托通常只创建一次,并在应用程序的整个生命周期内存在 永远不会被解除分配。因此保留它不会产生负面影响。
答案 1 :(得分:2)
问题可能与下面的案例中的自定义“委托”有关:
@property (nonatomic,weak) id delegate;
对象弱保留其委托的原因是避免保留周期。想象一下以下场景:对象a创建b并保留它,然后将自己设置为b的委托。 a由其所有者发布,留下包含a和b的保留周期。请参阅retain cycles上的Apple文档。
如果不是这样的话。关于AppDelegate与任何其他对象一样,当没有其他对象保留它时,将释放应用程序委托。 在应用程序终止之前有一个不会留下的应用程序代理是非常不寻常的,该应用程序可能无需在退出之前释放和解除分配任何内容。
简而言之,如果您保留AppDelegate,它可能不会被释放......
您可能会发现this有用
答案 2 :(得分:2)
保留appDelegate根本不重要,因为在应用程序退出之前不应该释放此对象。