我将在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“保留计数前”和“保留计数后”相等?
发布于 2011-08-17 15:08:39
这可能是一种过度留存。
将tintColor分配给UINavigationBar对象的tintColor属性。这将调用tintColor属性的UINavigationBar的设置器,该设置器将向要设置的给定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中的属性声明的类引用。
https://stackoverflow.com/questions/7088960
复制相似问题