我将在viewWillAppear中更改navigationBar tintColor:
self.navigationController.navigationBar.tintColor = tintColor;
:
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“在保留计数之前”和“保留计数之后”相等?
答案 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处的类引用,了解属性声明。