我是编写单例的新手,我必须为当前的 iOS 项目使用一个。要求之一是它可以被杀死。我知道这违背了单例的设计,但这是应该/可以做的事情吗?
最佳答案
当然可以,但是如果您正在寻找一个可以创建,然后在不需要时释放的对象……这听起来像是一个常规对象。 :)
通常单例控制自己的生命周期。你会在这里得到片面的讨论,除非你更多地说明这两个要求(一个,你使用一个单例,两个,它可以随意释放),以及为什么它们都对你的情况有意义。
这可能是因为单例包装了一些其他固有的独特资源(如文件资源或网络连接)。如果这是真的,那么通常单例是该资源的“管理者”,您将通过单例的接口(interface)公开对该资源的控制。
或者这可能是因为单例对象持有大量内存(某种缓冲区),并且您希望确保在必要时对其进行刷新。如果是这种情况,那么您可以根据需要对其创建和释放内存的每个方法更聪明,或者您可以让单例监听低内存系统通知并适本地表现。
从本质上讲,我很难构建一个案例,让单例对象本身被释放是真正有意义的。单个基本对象只占用内存中的少量字节,并且闲逛不会伤害任何人。
关于cocoa-touch - 完全解除分配 Objective-C 单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11944833/