【发布时间】:2017-03-03 06:28:54
【问题描述】:
我的父对象创建一个子对象来执行一些异步操作。它涉及一些用户交互,这也是我没有使用NSOperation 的原因之一。只有子对象知道它什么时候完成了它的任务,那么它如何告诉它的父对象我已经完成了,请释放我以避免内存泄漏?
目前想出这个,父对象有个回调方法叫releaseChild,也就是child = nil;当子对象完成其任务时,它调用父对象的releaseChild 只是为了将自己设置为nil。实际上,我将调用包装在 dispatch_after 中,但想法是一样的,子对象调用其父对象将自己设置为 nil。
我想知道有没有更好的方法?
-----更新-----
我知道写我孩子的“正常”方式是创建一个UIViewController 对象,将其推送到UINavigationController。完成后用户可以弹出它,ARC 将释放它。这样,我不需要担心内存泄漏(通常)。但我认为当子对象完成时释放子对象的问题,只有它知道它何时完成有一个边框应用程序而不是写一个UIViewController 对象。
【问题讨论】:
-
请问是什么类型的子类???
-
只是一个带有 UI 和网络内容的“普通”可可对象
-
因此,您需要覆盖
child中的dealloc()方法,并使用parent中的child对象调用该方法,然后在release中做任何您想做的事情。 -
伙计,你不明白我的问题。不要只是为了回答而回答
-
是的,我已经正确阅读了您的问题,在这里我不仅仅是为了回答,而是为了帮助开发人员,您是否尝试过上述提供的解决方案?不试怎么能说这不是你的问题?
标签: ios objective-c memory-leaks automatic-ref-counting