我在目标 C 中遇到内存管理问题。我一直在阅读高级内存管理编程指南,但除了完全放弃 ARC 并手动管理内存之外,我找不到解决问题的方法。
这是问题所在:
我有一个Controller
我做过的课程,其中包含有关在特定时间做什么的信息。
该类Controller
告诉应用程序的其余部分播放视频(例如)。视频播放良好。视频播放完毕后,Controller
全班就知道下一步该做什么。
不幸的Controller
是,几乎在视频开始播放时,ARC 就释放并释放了该类。因此,当视频结束时,应用程序会调用Controller
该类以查看下一步应该做什么,然后整个事情就崩溃了。我得到一个,EXC_BAD_ACCESS
因为该类不再在内存中。
我知道 ARC 正在发布我的Controller
课程,因为在它告诉视频开始播放之后,它什么也没做。但我想保留那个课程,直到我再次需要它。
我将此类声明为属性,如下所示:
@property (strong, nonatomic) Controller * controller;
但尽管如此,ARC 会在它不做任何事情时继续释放该类。
编辑:
我已将此属性移到 App Delegate 中。但 ARC 仍在发布它。我不能把它变成一个单例,因为我需要拥有这个类的多个副本。
当我不想要它时,如何停止 ARC 释放对象?
是否可以在不做任何事情时将对象保留在内存中?
这可能吗?还是我应该放弃 ARC 并手动进行内存管理?