我有一个应用程序,里面有很多天文计算。 为了理智,它们被分成单独的方法/功能。 单独运行没有内存逃逸。
然而,当我需要计算一些复杂的东西,比如太阳光线的入射角到地球上的任何地方时,我必须连续调用19种方法,并且内存使用量会通过屋顶。很显然,变量仍然存在,因此ARC无法将它们蒸发掉。
所以我认为解决方案是创建一个薄弱环节。如果我从
改变我的电话var angleIncidence = Celestial().calculateAngleIncidence(....)
到
weak var angleIncidence = Celestial().calculateAngleIncidence(....)
我得到一个“弱不能应用于非类型Double”。
我显然太天真了。
答案 0 :(得分:1)
双打不是对象,因此将它们称为强弱是没有意义的,因为它们没有引用计数。
在实践中,他们遵守可变范围的典型规则。但是,除非您使用非常大的数组,否则它们应该不会导致大量内存使用。我的感觉是可能正在发生其他事情 - 可能与存在的其他数据类型以及如何在函数之间传递数据有关。