更改
let为
lazy var。
我不确定编译器到底在想什么(或者它的疯狂错误消息来自何处),但是我的猜测是:
在Swift中,
let必须先初始化变量,然后才能使用
self。造成这种情况的一个原因是,编译器无法验证
addTarget(action:forControlEvents:)不会尝试调用
anonSwitch()其获得的所有内容
target,或执行其他操作,例如访问将在之后初始化的其他变量
anonSwitch,这取决于初始化是否已完成这个对象。
使用
lazyvar意味着编译器可以验证
anonSwitch之前不会访问分配给它的值
self是一个有效的对象,因为
anonSwitch在初始化该类的所有其他成员之前,无法调用。



