iphone - UIColor泄漏......需要释放物体吗?

时间:2010-10-06 00:29:16

标签: iphone

我的应用程序中有很多这样的行

UIColor *myColor = [UIColor colorWithRed:corR green:corG blue:corB alpha:1.0];

仪器说这些线路正在泄漏。因为这不是正式的,据我所知,一个alloc操作(不是吗?)我没有看到需要释放对象,但是由于乐器在抱怨,我添加了几行

[myColor release]

使用变量后,取悦野兽。

这样做会有问题吗,比如崩溃什么的?

显然这样做是解决问题,但是我发布一个未分配的对象我感到不舒服。

您怎么看?

感谢。


E D I T

我认为这是一个xcode问题或框架泄漏。 为了证明我用

替换了这些行
UIColor *myColor = [[UIColor alloc] initWithRed:corR green:corG blue:corB alpha:1.0];

然后可以安全地释放对象......

这样做,解决了问题。

3 个答案:

答案 0 :(得分:9)

不要释放对象,你不拥有它,你最终会崩溃。 UIColor可能只是为你缓存这些颜色,而且仪器无法知道这一点,因此它将它们报告为泄漏(基本上是已经创建的东西,你不再有引用,但还没有被释放)。

尝试运行仪器一段时间(使用模拟器)然后发送内存警告以查看UIColor是否将清除其缓存。无论哪种方式,都没有什么可以真正解决核心框架内发生的泄漏,所以不要尝试。只要确保你实际上没有以某种方式泄漏它们(比如在某些时候保留它们并且从不释放它们)。

答案 1 :(得分:2)

如果这就是你所做的一切,myColor绝对不会泄露。如果您将该对象保留在其他任何地方而不释放它,则它正在泄漏。

永远不要释放您不记得保留的物体。的 Evvarrrrrrrrr 即可。但是我怀疑你只是把它留在了某个地方,甚至没有注意到它。

答案 2 :(得分:1)

有时模拟器可以在没有泄漏的情况下报告泄漏,同时也要确保在设备上也看到同样的泄漏......

但是因为使用模拟器更快,所以先尝试在那里找东西。