0

我已经实现了一个连接到数据库的应用程序。现在,问题是我需要为某些对象实现一个缓存系统(如果可能的话),因为每次我需要这些对象时,它们的初始化都需要很长时间才能从数据库中获取所需的数据。(这些对象不会经常更改,事实上,如果需要,我可以使用时间戳更新它们。)

由于我不能轻易更改整个应用程序,我想知道是否有任何方法可以在构造函数本身中设置“this”对象。我指的是Objective-C的能力,我可以调用任何返回an的方法并将其id设置为self“变量”,然后实际上更新整个对象。为了更好地解释我的想法:我想在这些类中初始化一个静态缓存,并在构造函数中获取已经存储的对象(如果可用)。请注意,所有setter 也都引用 SQL代码。

我也知道我可以只使用已存储对象的 getter在构造函数中设置新对象的值,但这也会创建许多对象,如果值可能发生变化,我不会复制这个到从该对象克隆的所有其他对象。

有什么想法吗,谢谢?!

4

1 回答 1

4

构造函数只对新对象进行操作。如果要重用对象,则不能使用构造函数。创建对象本身是微不足道的<< 100 ns,这让我相信您不需要回收对象,而是来自数据库的对象中的数据。

访问数据库大约需要 0.1 到 10 毫秒。创建一个对象需要 10 到 100 ns(百万分之一毫秒) 如果您担心创建新对象的成本,则根本不应该使用数据库,因为它可能会贵一百万倍。

于 2013-03-08T11:22:22.510 回答