cocoa-touch - 完全解除分配 Objective-C 单例

标签 cocoa-touch design-patterns singleton

我是编写单例的新手,我必须为当前的 iOS 项目使用一个。要求之一是它可以被杀死。我知道这违背了单例的设计,但这是应该/可以做的事情吗?

最佳答案

当然可以,但是如果您正在寻找一个可以创建,然后在不需要时释放的对象……这听起来像是一个常规对象。 :)

通常单例控制自己的生命周期。你会在这里得到片面的讨论,除非你更多地说明这两个要求(一个,你使用一个单例,两个,它可以随意释放),以及为什么它们都对你的情况有意义。

这可能是因为单例包装了一些其他固有的独特资源(如文件资源或网络连接)。如果这是真的,那么通常单例是该资源的“管理者”,您将通过单例的接口(interface)公开对该资源的控制。

或者这可能是因为单例对象持有大量内存(某种缓冲区),并且您希望确保在必要时对其进行刷新。如果是这种情况,那么您可以根据需要对其创建和释放内存的每个方法更聪明,或者您可以让单例监听低内存系统通知并适本地表现。

从本质上讲,我很难构建一个案例,让单例对象本身被释放是真正有意义的。单个基本对象只占用内存中的少量字节,并且闲逛不会伤害任何人。

关于cocoa-touch - 完全解除分配 Objective-C 单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11944833/

相关文章:

iphone - 使用 iPhone 地址簿联系人创建电子名片

iphone - 加载另一个 UIView 时出现问题

ios - NSURLConnection与ARC不接收数据

ios - 确定细胞的当前状态

java - 我的工厂方法的实现是否正确?

architecture - DAO 模式的最佳实践?

c# - 尝试实现策略模式时出现 WrongClassException(根据自己的 ID 进行区分)

c++ - 单例析构函数

C++单例实现,双重检查锁定

java - 难以理解为什么子类化单例与单例的定义相矛盾?