我是一个试图找出内存泄漏问题的新手。有没有人看到以下代码有什么问题?
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController.navigationBar setTintColor:[UIColor colorWithRed:0.10 green:.20 blue:0.30 alpha:1]];
}
如果有帮助,仪器会显示泄漏的块,其中包含以下信息......
事件类型:Malloc
负责任的图书馆:CoreGraphics
负责的来电者:CGTypeCreateInstanceWithAllocator
非常感谢任何帮助。 (我还是很新,所以请尽可能详细地解释。)
非常感谢!
答案 0 :(得分:1)
就内存管理而言,您发布的代码是正确的。
仪器泄漏只会显示泄漏对象的分配点,而不是实际泄漏的点。
所以,你的泄漏在其他地方。看看你的代码,我会说当你释放包含该代码的类时,或者在dealloc
的动态路径上的其他地方,可能会发生泄漏。
尝试注释setTintColor
以检查泄漏是否仍然存在。
希望这个解释可以让你走上正轨,但无论如何,如果你需要更多帮助,你应该发布更多代码......
答案 1 :(得分:1)
有点远,但我不确定它是否只是我项目中的错误,但在tintColor
中设置viewWillAppear
时我遇到过类似的问题。在最终分配颜色之前,我最后添加了nil
检查,这为我清理了(我没有对它进行任何进一步的调查,所以我可能错了)。
if (nil == self.navigationController.navigationBar.tintColor) {
self.navigationController.navigationBar = [UIColor colorWithRed:0.10 green:.20 blue:0.30 alpha:1];
}