Swift 从故事板切换到编程时的全局变量陷阱

Swift 从故事板切换到编程时的全局变量陷阱,swift,custom-keyboard,Swift,Custom Keyboard,我为iOS构建了一个自定义键盘扩展。我最初是用故事板构建的,长话短说,它并没有那么好用,因为用故事板制作键盘时会出现很多故障和崩溃。因此,我以编程方式重建了它 我在以编程方式复制整个过程中占了95%,但关键组件不起作用-一个非常重要的PickerView 在应用程序的故事板版本中,PickerView是一个全局变量,几个不同的函数可以操作它。它工作得很好 不过,现在我已经通过编程方式复制了整个应用程序。所有的按钮、视图等都工作得很好。但是,当PickerView声明为全局变量时,键盘会崩溃。我想

我为iOS构建了一个自定义键盘扩展。我最初是用故事板构建的,长话短说,它并没有那么好用,因为用故事板制作键盘时会出现很多故障和崩溃。因此,我以编程方式重建了它

我在以编程方式复制整个过程中占了95%,但关键组件不起作用-一个非常重要的PickerView

在应用程序的故事板版本中,PickerView是一个全局变量,几个不同的函数可以操作它。它工作得很好

不过,现在我已经通过编程方式复制了整个应用程序。所有的按钮、视图等都工作得很好。但是,当PickerView声明为全局变量时,键盘会崩溃。我想我应该在我的
@objc func setupPickerView
中将其设置为局部变量,但意识到其他函数(需要由其他函数操作)无法操作它

与代码(编程布局除外)的唯一区别是:

我读过很多关于从不使用全局变量的书,所以我明白了。但我想知道的是,我在这里错过了什么?我该如何解决这个问题?我是否需要后退一步,重构一切,或者我可能会错过一些简单的东西


此外,我是自学成才的新手,调试扩展非常困难,我可以使用一些指导。谢谢

我最终学习并为该变量创建了一个“singleton”类,现在一切都正常了


(回音,回音,回音…

为什么这只是一个被否决的怪胎?请解释一下。
@IBOutlet weak var timerPicker: UIPickerView!

var timerPicker: UIPickerView!