0

我需要实现一些可以在应用程序的几个不同位置使用的功能。它基本上是通过网络发送一些东西,但我不需要将它附加到任何特定的视图 - 我可以通过 UIAlertViews 将所有内容传达给用户。

我想做的是将功能封装在一个对象(?)中,该对象可以保持自己的状态一段时间,然后自行消失。我读过几个类似的主题,通常不建议拥有一个保留然后释放自身的对象,但另一方面,你有单例,除了它们永远不会被释放的事实之外,它们在本质上非常相似。您无需保留对它们的引用即可正确使用它们。然而,在我的情况下,我觉得创建一个单例然后让它保持活动状态需要几秒钟才能执行的事情有点浪费。

我想出的是一个类本地的静态字典,它保留对类实例的唯一引用,然后,当一个实例完成其任务时,它会在延迟后执行选择器“removeObjectForKey”,从而删除唯一存在的引用并有效地杀死对象。这样,我只在内存中保留一本字典,无论如何它大部分时间都是空的。

问题是:这种解决方案是否有任何我应该注意的意外副作用,并且对于所描述的情况还有其他好的模式吗?

4

1 回答 1

0

所以基本上不是你自己的类的持久对象,你有一个类型的持久对象NSDictionary?这有什么帮助?你的物体是否异常大?如果你为了几个字节而让你的代码库变得更复杂,那不是一个好的权衡。

尤其是现在ARC已经司空见惯,这种诡计通常不是一个好主意。您是否测量过单例方法占用了多少内存并发现这是一个问题?除非你已经这样做了,否则请使用单例。这是更简单的代码,在所有其他条件相同的情况下,更简单的代码要好得多。

于 2012-12-14T12:11:48.873 回答