我创建了一个测试项目来确认我的内存泄漏:项目文件:https ://dl.dropbox.com/u/3703182/PickerView.zip
基本上 UIPickerView 通过 IB 连接到数据源。当它连接到数据源时,它会泄漏。如果没有,则不会泄漏。我需要将 UIPickerView 用于需要尽快发布的即将发布的应用程序,不幸的是,由于泄漏,它保证每 2 小时崩溃一次。尽管内存泄漏而不会崩溃,我如何使用 UIPickerView?
编辑:它只在设备上泄漏,而不是在模拟器中。
我创建了一个测试项目来确认我的内存泄漏:项目文件:https ://dl.dropbox.com/u/3703182/PickerView.zip
基本上 UIPickerView 通过 IB 连接到数据源。当它连接到数据源时,它会泄漏。如果没有,则不会泄漏。我需要将 UIPickerView 用于需要尽快发布的即将发布的应用程序,不幸的是,由于泄漏,它保证每 2 小时崩溃一次。尽管内存泄漏而不会崩溃,我如何使用 UIPickerView?
编辑:它只在设备上泄漏,而不是在模拟器中。
那不是泄漏。这是一个分配。如果是泄漏,它将在第二行显示红色尖峰。泄漏的真正测试是多次呈现和消除。如果你能做到这一点并表明分配不断增加,那么就有泄漏。不然。
这是正在泄漏的 Apple 库。你对此无能为力。这是苹果的错。
这不是您可以控制的泄漏,它是内部的……但这只是很小的内存量,不会使您的应用程序崩溃。我很想看看这看起来像一个小时......你能提供崩溃的回溯吗?这可能会更好地帮助确定坠机的真正原因。
添加我的评论作为答案,
您的应用程序不会因为此泄漏而崩溃,因为它是由您不必担心的框架引起的非常小的泄漏。屏幕截图显示它是几个字节。如果您的应用程序每 2 小时崩溃一次,这意味着还有其他东西正在使用大量内存。请检查您是否在代码中使用了其他可能导致此问题的内容,并根据您的发现更新问题。
在分配工具中,确保您正在检查活动字节部分并检查它上升了多少。如果它保持在 15-20 MB 以下,则无论如何您都不必担心。检查此以获取有关app 中内存使用情况的更多详细信息。还要检查这个XCode Instruments Allocations: Look at Live Bytes or Total Bytes? .