【发布时间】:2010-10-06 00:29:16
【问题描述】:
我的应用中有很多这样的行
UIColor *myColor = [UIColor colorWithRed:corR green:corG blue:corB alpha:1.0];
仪器显示这些线路正在泄漏。据我所知,这不是正式的分配操作(不是吗?)我没有看到释放对象的必要性,但是由于仪器抱怨,我添加了几行作为
[myColor release]
使用变量后,取悦野兽。
这样做会不会有问题,比如崩溃之类的?
显然这样做可以解决问题,但我不愿意释放未分配的对象。
你怎么看?
谢谢。
编辑
我想这是一个 xcode 问题或框架泄漏。 为了证明我用
替换了这些行UIColor *myColor = [[UIColor alloc] initWithRed:corR green:corG blue:corB alpha:1.0];
然后对象就可以安全释放了……
这样做,解决了问题。
【问题讨论】:
-
你是对的,你不应该释放那条线。你代码中的其他东西是罪魁祸首。 Instruments 还指向什么?
-
仪器指向这条线......我使用的每一行都被标记为泄漏,我没有保留。如果我没记错的话,我的整个项目中没有任何保留命令。我有第二个选择:将这些行替换为 [[UIColor alloc] initWithRed: green: blue: alpha:]... 然后我可以释放它。
-
由于颜色实际上是特殊的(基本上是单例),所以 UIColor 几乎肯定只是在做某种缓存。除非您的应用程序由于 UIColor 缓存使用的内存而一直被抛弃,否则我会忽略它。让 UIColor 缓存将加快您对颜色的访问。
标签: iphone