【发布时间】:2023-04-10 00:06:01
【问题描述】:
Xcode Instruments 说我有 CGColor Leak。
- 责任图书馆:CoreGraphics
- 责任框架:CGTypeCreateInstance
堆栈将其追溯到“Main”,下面的代码突出显示为错误。
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([PDCAppDelegate class]));
}
}
有谁知道如何解决这个问题?谢谢大家!
【问题讨论】:
-
主线程上的一切最终都会追溯到那里。问题是,栈顶和那里之间是什么?
-
嗨,Ken,当我查看泄漏的详细汇总时,唯一以黑色突出显示的项目是“主要”。我的理解是灰色的项目超出了我的控制范围。这不正确吗?
-
好吧,另一点是负责的框架就是它被分配的地方。您需要检查对象的历史记录,以查看代码的其他部分是否保留了它但未能释放它。
-
好吧,我会更深入地研究它。显然是内存管理的新手。有一个没有 ARC 的应用程序。我应该先尝试将整个项目转换为 ARC,还是应该尝试手动跟踪这些内容?
-
ARC 很好,我推荐它,虽然它不是灵丹妙药。请记住,ARC 对像 Core Graphics 这样的非 Objective-C 内存管理没有帮助。就口味而言,对于这样的事情,我个人总是喜欢先解开谜团让我满意,然后再考虑换一种不同的做事方式。至少,这将是一次宝贵的学习经历。
标签: iphone ios objective-c xcode memory-leaks