UIColor -initWithRed:绿色:蓝色:alpha:内存泄漏?

时间:2011-11-06 14:22:45

标签: iphone ios ios4 ios-4.2

我遇到这种情况:

UIColor *color = [[UIColor alloc] initWithRed:0/255.f green:156/255.f blue:255/255.f alpha:1];
self.lightBlue = color;
color = nil;
[color release];

在UIColor * color = [[UIColor alloc] initWithRed:0 / 255.f green:156 / 255.f blue:255 / 255.f alpha:1];

中收到memoery泄漏

仪器的情况: instruments situation

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

您正在将局部变量'color'设置为nil,然后执行[nil release],它不执行任何操作。

如果你真的需要'color = nil',你应该在发布后进行。

答案 1 :(得分:1)

泄漏工具可以显示泄漏的内容。

所以它说的是,在你分配了这些值后,它们从未被释放 - 这似乎意味着你的导航控制器应该在它应该被释放时。不要释放对象,你不拥有它,你最终会崩溃。 UIColor可能只是为你缓存这些颜色,而且仪器无法知道这一点,因此它将它们报告为泄漏(基本上是已经创建的东西,你不再有引用,但还没有被释放)。

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

底线是如果以上代码就是您正在做的所有事情,color绝对不会泄漏。如果您将该对象保留在其他任何地方而不释放它,则它正在泄漏。

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