使用多个线程时这是一个内存管理问题吗?

时间:2009-10-14 08:32:40

标签: iphone multithreading

示例:在我的主线程中(没有做任何特殊操作的线程)我调用一个选择器在后台线程中执行。所以有一个新的主题,对吧?现在,在这个后台线程中,我创建了一个保存图像数据的新对象。接下来我使用该对象并希望将其保留一段时间。我如何存储对该对象的引用,以便稍后发布?或者只要该对象存在,该线程是否存活?线程如何与在其中创建的对象相关? 也许有人可以用清晰的语言解释: - )

1 个答案:

答案 0 :(得分:0)

存储位置和线程创建是两个独立的概念。根据谁将最终“拥有”它或何时将在稍后发布对象创建一个对象并不重要。

不幸的是,对你的问题没有明确的答案,但我首先要考虑这个对象是否是单例,或者它是否是可以被清除的缓存项,或者它是否是你需要的结果对象以异步方式传回其他选择器。

如果是单例,请将其置于静态var中,并且永远不要释放它(或者,考虑到低内存警告,请考虑这样做)

如果它是缓存,则在插入项目时让缓存拥有该项目,因此您不必担心它。您可能需要自动释放来执行此操作,但在使用自动释放和线程时要小心,因为每个线程可能有自己的自动释放池,它会在不同的时间耗尽。

如果您需要将对象传递回另一个来电者,则需要在返回时自动发布,并让来电者获取该项目的所有权。