从不发布对象可以吗?

时间:2011-02-26 06:06:20

标签: iphone objective-c

在我的iOS OBJC应用程序中,我使用一个对象,特别是UIImage。我总是需要这个UIImage,特别是当用户决定切换方向时。问题是我只获得此图像一次,并且只要应用程序运行就需要它。结果,我分配了这个对象并发送了retain。我从来没有发布它,因为如果我这样做并且用户切换方向,那么该对象可能会被实现,我将无法做我需要做的事情,因此应用程序将崩溃。

我的观点:我该怎么办?我做得不好因为它会造成泄漏吗?如果是这样,我该如何解决这个问题呢?

感谢。

2 个答案:

答案 0 :(得分:2)

听起来你正在加载一个图像并保持它永远重复使用。这很好,但如果它是一个可能不需要的大图像,你可能想听内存通知然后释放它。

当您分配大型对象或大量永不释放的对象时,会出现永不释放的问题。特别是如果你不断重新分配“相同”事物的新实例,因为你忘记了旧实例。

答案 1 :(得分:1)

约翰。我有一个不同的方法,加载和释放无处不在。您会看到,当您使用[UIImage imageNamed:] 时,iOS会缓存图片。下次调用[UIImage imageNamed:]时,它会非常快速地从内存中使用缓存的图像。这样你仍然可以编写干净的内存代码(在所有地方发布,没有保留),iOS有你的回复。