默认情况下,IBOutlets在Swift中很弱。我在故事板中创建的 viewController 中有一个对象,它不在视图层次结构中,所以我需要它在 ViewController 中作为强引用,我该如何更改< strong> @IBoutlet 属性强。
答案 0 :(得分:26)
您可以在连接插座时选择IBOutlet
来制作strong
strong
:
或者只是从声明中删除weak
关键字:
@IBOutlet var label: UILabel!
答案 1 :(得分:7)
从Xcode 6 beta 2开始,Swift没有办法指定强大的渠道。解决方法是连接IB中的插座,然后从源文件中删除@IBOutlet
属性。
更新:已在Xcode 6 beta 3中添加。
答案 2 :(得分:4)
现在可以选择从下拉列表中创建插座。
这就是为什么我们可能希望从WWDC 2015 Session 407开始强化它们
http://asciiwwdc.com/2015/sessions/407
我想指出的最后一个选项是存储类型,可以 无论是强者还是弱者。
一般情况下,你应该让自己的出路变得强大,特别是如果你的话 将插座连接到子视图或不连接的约束 总是会被视图层次结构保留。
你真正需要做出一个弱点的唯一一次就是你有一个 自定义视图引用视图层次结构的备份和 一般情况下不推荐。
所以我要选择强,我会点击连接 生成我的插座。
答案 3 :(得分:4)
更改插座的名称,它可能是一个保留名称,因此您试图覆盖它。
答案 4 :(得分:2)
strong
关键字再次消失,并在Xcode 6.1.1中引发语法错误。看起来默认情况下,网点现在很强大,而之前则相反。因此,只需定义没有附加声明的插座。
@IBOutlet var nameOfOutlet: type = Whatever();
答案 5 :(得分:2)
该错误的另一个原因是因为一个愚蠢的错误。例如,当我在视图控制器中初始化一个名为“ imageView”的UIImageView对象时,发生了一个错误“无法用弱属性覆盖强属性”。 但是,当我更改对象名称(例如“ pictureView”)时,错误消失了。 最好的问候...
答案 6 :(得分:1)
从Xcode 6 beta 3开始,Swift现在允许将@IBOutlets
标记为strong
。
•@ IBOutlets可以明确标记为强,以覆盖它们 隐含弱行为。 (16954464)