【发布时间】:2018-12-27 23:14:57
【问题描述】:
如果我想捕获我在闭包内运行过滤器的数组,那将创建一个强引用循环。由于数组是 swift 中的值类型,因此我无法在闭包内的捕获列表中将其捕获为弱指针。有什么好的解决方案?
例子:
array.filter{ array.contains($0+2) }
在这种情况下,我再次捕获数组,因此创建了一个强引用循环,我们如何解决这个问题?
注意:我并不是要解决这个问题(保持彼此相距 2 的值),这只是一个示例。我只是好奇我们如何解决这个问题。
【问题讨论】:
-
你不能有一个非引用类型的引用循环。不要假设存在内存泄漏。使用 Instruments 验证是否确实存在内存泄漏。
-
> 引用计数仅适用于类的实例。结构和枚举是值类型,而不是引用类型,并且不是通过引用存储和传递的。 from here
标签: ios arrays swift filter closures