这真的很奇怪。我有一个空白的 UIImageView 子类,它实现了 -touchesEnded:、-touchesMoved 和 -touchesBegan: 方法。这些方法的实现是空的。他们只是什么都不做。但是,当我使用“Leaks”运行 Instruments 时,我触摸 UIImageView 并将手指移到 UIImageView 之外,同时仍然触摸屏幕,我收到 Instruments 的 Memory Leak 警告。
在我的演示应用程序中,这样做时不会发生对象分配。方法是空的。我在 Instruments 中阅读的所有内容都与 Foundation 和 Run Loop 相关。我已经检查了我的班级两次并删除了任何对象分配。它只是一个只显示图像的骨架,但是当触摸它或在屏幕上移动手指时,该图像不会改变。这是没有意义的。
有没有其他人遇到过这样的问题?
更新:我测试了一下,发现当用 5 个手指快速敲击时,屏幕上的任何位置都会发生内存泄漏。我从 Instruments.app 得到的一切都与一些运行和事件循环有关。似乎设备无法足够快地处理触摸,然后在释放分配的对象时卡住了。如果您发现相同的问题,请尝试并在此处报告。
更新:我现在也测试了一些 Apple 示例应用程序。当我像普通用户一样用 3 到 5 根手指在屏幕上进行黑客攻击时(是的,他们会这样做!),然后 Instrument 会显示有关事件和运行循环的内存泄漏。在框架或工具中肯定有一个大的。使用 iPhone OS 2.2.1 测试。