navigationBar tintColor内存泄漏

时间:2011-08-17 06:56:14

标签: ios

我将在viewWillAppear中更改navigationBar tintColor: self.navigationController.navigationBar.tintColor = tintColor;

在viewWillDisappear中

NSLog(@"before retain count:%d", [tintColor retainCount]); self.navigationController.navigationBar.tintColor = nil; NSLog(@"after retain count:%d", [tintColor retainCount]);

tintColor = [[UIColor colorWithRed:23.0/255.0 green:169.0/255.0 blue:226.0/255.0 alpha:1.0] retain];

为什么nslog“在保留计数之前”和“保留计数之后”相等?

1 个答案:

答案 0 :(得分:0)

这可能是一种过度保留。

将tintColor指定给UINavigationBar对象的tintColor属性。 这将调用UINavigationBar的setter作为tintColor属性,该属性将一个retain-message发送到要设置的给定tintColor。

我解释最后一行代码

tintColor = [[UIColor colorWithRed:23.0/255.0 green:169.0/255.0 blue:226.0/255.0 alpha:1.0] retain];

作为您创建自定义tintColor的那个。最后一个保留是问题所在。 你可以这样做,但是你必须在某个地方发布它才能使引用计数内存清理工作。

查看Apple UINavigationBar Class Reference处的类引用,了解属性声明。