cocoa - 3 个 UIImage 上数千张图像的内存泄漏问题

标签 cocoa memory-leaks uiimage release

我有 3 个 UIImage 的内存泄漏,问题是我不能在代码中的任何地方释放它们,因为它们一直在许多不同的地方使用,而且我不知道它们在哪里(超过 20,000代码行)所以我的问题是,如果说每 10 秒我获取其中一个 UIImage,创建一个空白占位符 UIImage,将该空白 UIImage 的图像设置为原始 UIImage 的图像。释放原来的UIImage,现在将原来的UIImage的图像设置为占位符UIImage,然后释放占位符UIImage,这样可以吗?如果我设置一个 UIImage 一千次,然后在最后释放它,它会清除所有数据还是我必须释放它一千次?

最佳答案

我不太明白你想做什么,但你只有一个解决方案:修复内存泄漏。其他一切可能只会转移你的问题,直到一切崩溃。

由于您似乎存在泄漏,因此您可能没有遵循 Apple memory management guidelines足够严格。阅读、理解并遵守本文档至关重要,它可能是您需要理解的有关 iOS 开发的最重要的文档。如果这样做,即使是大型项目也可以完全避免内存泄漏。如果不这样做,最终会导致泄漏和崩溃。

幸运的是,Apple 已经可以帮助您发现很多问题:在 Xcode 中按“分析”并修复静态分析器发现的所有问题。除了少数罕见的异常(exception)情况外,分析器报告的问题都是需要修复的真实问题。顺便说一句,编译器警告也是如此。无论您的应用程序有多大,您的项目都不应该产生任何警告和静态分析器问题(我可以通过多年开发应用程序的第一手经验告诉您)这不仅是可能的,而且是保持理智的唯一方法)。

如果静态分析器没有发现内存管理不善,您将需要硬着头皮手动分析所有使用图像的位置,并且可能重写一些类。每一种解决方法都只会将您需要做的工作推迟到以后,甚至可能使事情变得更糟。

关于cocoa - 3 个 UIImage 上数千张图像的内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959003/

相关文章:

python - 大型 celery 任务内存泄漏

perl - 为什么 Test::LeakTrace 说这个 Perl 代码正在泄漏内存?

iphone - 如何将UIView的部分转换为UIImage并在imageView中显示

cocoa - 重用 NSPredicate 进行新变量替换

ios - 如何在 Storyboard中创建分组文本字段?

xcode - 使用 CALayers、层托管或层支持对 NSImageView 进行注释?

ios - 如何根据设备大小和比例调整 UIImage 的大小?

objective-c - 如何在 Cocoa Objective-C 中将文本转换为图像

ios - 我的 View Controller 被保留(我认为),但我找不到强有力的引用

快速变色显示不同颜色