在文件顶部引用非启动变量

Reference non-initiated variable at top of file

说起来有点奇怪,但基本上我的代码如下:

import UIKit

class BarcodeScanPopover: UIViewController, UIPopoverPresentationControllerDelegate {
    @IBOutlet weak var navbar: UINavigationItem!
    @IBOutlet weak var product: UILabel!
    @IBOutlet weak var productimage: UIImageView!
    @IBOutlet weak var scanner: UIView!
    var scan: MTBBarcodeScanner = MTBBarcodeScanner(previewView: scanner);
    override func viewDidLoad() {

所以我遇到的问题是我无法在不启动 MTBBarcodeScanner 对象的情况下声明 "scan",但与此同时,我无法启动 MTBBarcodeScanner对象而不调用 "scanner",这在文件顶部是不可能的。不幸的是 MTBBarcodeScanner() 不是一个有效的 init 并且会导致崩溃,所以这也是不可能的。

我需要这样做,因为我需要在代码的不同点访问 "scan" - 而不仅仅是在一种代码方法中。

有什么建议吗?

如果您确定在加载视图后始终拥有 MTBBarcodeScanner 的实例,请将其声明为 MTBBarcodeScanner!: var scan: MTBBarcodeScanner!。这使它成为一个隐式展开的可选值,允许它是 nil 除非你试图访问它上面的一些 property/function 。

因此,您应该确保在以任何其他方式访问它之前始终为其分配一些内容。这可以而且应该在 viewDidLoad:

中完成
scan = MTBBarcodeScanner(previewView: scanner)

您可以让您的 MTBBarCodeScanner 实例成为可选实例,并将其初始设置为 nil

var scan: MTBBarcodeScanner? = nil

此后,一旦 scanner 实例可用(例如在 viewDidLoad 中),就调用您的初始化程序更新其值。