我的应用程序中有很多这样的行
UIColor *myColor = [UIColor colorWithRed:corR green:corG blue:corB alpha:1.0];
仪器说这些线路正在泄漏。因为这不是正式的,据我所知,一个alloc操作(不是吗?)我没有看到需要释放对象,但是由于乐器在抱怨,我添加了几行
[myColor release]
使用变量后,取悦野兽。
这样做会有问题吗,比如崩溃什么的?
显然这样做是解决问题,但是我发布一个未分配的对象我感到不舒服。
您怎么看?
感谢。
我认为这是一个xcode问题或框架泄漏。 为了证明我用
替换了这些行UIColor *myColor = [[UIColor alloc] initWithRed:corR green:corG blue:corB alpha:1.0];
然后可以安全地释放对象......
这样做,解决了问题。
答案 0 :(得分:9)
不要释放对象,你不拥有它,你最终会崩溃。 UIColor可能只是为你缓存这些颜色,而且仪器无法知道这一点,因此它将它们报告为泄漏(基本上是已经创建的东西,你不再有引用,但还没有被释放)。
尝试运行仪器一段时间(使用模拟器)然后发送内存警告以查看UIColor是否将清除其缓存。无论哪种方式,都没有什么可以真正解决核心框架内发生的泄漏,所以不要尝试。只要确保你实际上没有以某种方式泄漏它们(比如在某些时候保留它们并且从不释放它们)。
答案 1 :(得分:2)
如果这就是你所做的一切,myColor
绝对不会泄露。如果您将该对象保留在其他任何地方而不释放它,则它正在泄漏。
永远不要释放您不记得保留的物体。的 Evvarrrrrrrrr 即可。但是我怀疑你只是把它留在了某个地方,甚至没有注意到它。
答案 2 :(得分:1)
有时模拟器可以在没有泄漏的情况下报告泄漏,同时也要确保在设备上也看到同样的泄漏......
但是因为使用模拟器更快,所以先尝试在那里找东西。