【发布时间】:2017-06-18 04:03:44
【问题描述】:
我目前正在开发一款 tvOS 应用。这是我的第一个本机 (Swift) 应用程序。该应用程序将是一个数字标牌应用程序,在活动期间或公司办公室使用。 与 iOS/tvOS 上的典型应用程序相比,一个很大的不同是它需要几乎 24/7 运行,因此内存是这个应用程序的一个重要主题。最小的泄漏最终会导致应用崩溃。
该应用不断循环播放一组全屏幻灯片。在屏幕底部有一个包含 10 篇文章的代码(每 10 秒刷新一次 - 现在正在开发中)。下面是天气幻灯片的屏幕截图,供大家参考。
目前,应用程序在一段时间后崩溃,我很确定我已将其范围缩小到股票代码组件(禁用它时,应用程序会存活数天)。如果我在 Instruments 中使用“Leaks”预设,我会得到以下结果:  看起来它正在泄漏文章实例。我每 10 秒重新创建一次 Article 实例,并将它们提供给 ticker 组件。我认为这就是为什么新实例每隔约 10 秒就会泄漏一次。
在我开始使用 Instruments 中的“Leaks”预设之前,我使用了“Allocations”预设,而使用这一切对我来说似乎都很好。但我可能误读了结果……
使用分配:  我读到这篇文章的方式是,目前内存中存在 10 个 Article 实例,其中 31 个已存在但现在已清理 - 所以我很安全。
但应用仍然崩溃。
我已经阅读了很多关于保留周期的文章,在我认为应该的地方实施了弱/无主。
所以我的问题不是关于代码,而是更多关于如何读取这些数据,在这种情况下泄漏意味着什么,以及为什么我认为这些“泄漏”不是在分配中的持久对象 窗口?
(测试在多台设备+模拟器上完成)
【问题讨论】:
标签: ios swift memory-leaks instruments tvos