Swift IBOutlet集合并保留循环安全
我一直试图在MacOS项目中使用Swift插座集合一段时间,并且只是刚刚了解到这一点目前不可行。我仍然困惑,为什么不呢,但假设这在某些时候被修正了,我还有一个担忧。Swift IBOutlet集合并保留循环安全
据我所知,网点一般应薄弱,除“根”的出口,以防止保留周期:
@IBOutlet weak var someButton: NSButton!
但我已经找到了集合语法的示例不包括弱修改,而我还没有找到把它(1)是有道理的,和(2)没有得到一个红旗的地方:
@IBOutlet var severalButtons: [NSButton]!
所以,我失去了一些东西明显?我可以肯定,这样的出口收集不会创造一个保留周期吗? (假设他们曾被允许?)
与IBAction
或IBOutlet
不同,IBOutletCollection
将类名称作为参数。作为顶级对象,应该声明IBOutletCollection
强。这在here中有更详细的解释。
因此,由于此限制,IBOutletCollection
有可能创建保留周期。
我认为我们处在同一页面上:我明白集合本身必须有强大的参考,并且您确认我怀疑如果我不小心,集合数组中的强引用可能会导致问题。但在我的情况下,集合将被拥有(这是目前假设的,因为MacOS)由接口根对象。因此界面内的所有权不再是简单的树,而是有向的非循环图。但我认为我会没事的,因为所有权仍然是“非循环的”。 –
@JeffJ很高兴你明白。那么你在寻找什么答案? –
我认为你已经尽可能地回答了我的问题。我担心我错过了一些东西,因为集合的Swift语法似乎不允许设置弱插口引用的可能性,这仍然看起来很奇怪。除非你想知道为什么IB似乎无法识别MacOS项目中的集合的存在,但我被告知它在iOS项目中做得很好?否则,谢谢。 –
没有理由让网点“弱”,他们没有创建一个参考周期。 – Sulthan