【发布时间】:2019-05-17 03:34:44
【问题描述】:
我碰巧在我的新 iOS Swift 应用程序的UIViewControllers 之一中编写了以下代码 sn-p。
var starButtonsCount = starButtons.count
@IBOutlet var starButtons: [UIButton]!
然后直接在starButtonsCount变量声明旁边出现下面红色的错误。
错误:不能在属性中使用实例成员“starButtons” 初始化器;属性初始化器在“self”可用之前运行。
所以我发现通过将starButtonCount 变量声明为lazy 我们可以解决这个错误(在iOS App 开发过程的长期运行中是暂时的)。
我很想知道解决这个问题的其他方法是什么?
当starButtons IBOutlets 初始化时,有没有办法触发starButtonCount 的初始化?
【问题讨论】:
-
这是
awakeFromNib方法的目的。 -
我在网上搜索时是这么想的。但是找不到具体的答案!您能否进一步详细说明答案?
-
不声明常量的目的是什么?按钮在设计/编译时连接,因此您应该知道按钮的数量。
-
@vadian 即使我已将
starButtonsCount声明为常量,仍然会出现相同的错误。所以重点应该是如何初始化BOutlets以及如何捕获它并初始化我的变量。 -
如果将
starButtonsCount声明为let并带有常量Int,则不会出现同样的错误
标签: ios swift iboutlet initializer