UISearchController 的 init(searchResultsController: UIViewController?) 崩溃

UISearchController's init(searchResultsController: UIViewController?) crashes

在新的 ViewController 的 viewDidLoad() 中调用 UISearchController(searchResultsController: nil) 会崩溃并出现 EXC_BREAKPOINT (code=1, subcode=0x185d73080)(也就是一些 nil 可选被解包)。

如果我尝试在另一个新项目/游乐场中执行代码,它可以正常运行而不会崩溃。

我还创建了一个自定义 UISearchController 并通过断点对其进行调试,它引导我使用 init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) 方法,然后它崩溃了。它可能已链接。

我必须提一下,调用简单的 init() 不会使我的应用程序崩溃。

具体示例:

override func viewDidLoad() {
    super.viewDidLoad()
    UISearchController(searchResultsController: nil)
}

已解决,但令人难以置信。我新建了一个项目,一个一个的添加文件,看看哪个干扰了我的代码。

好像我有一个扩展:

    @IBInspectable var paddingRight: CGFloat {
    get {
        return rightView!.frame.size.width
    }
    set {
        let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: frame.size.height))
        rightView = paddingView
        rightViewMode = .always
    }
}

而且 rightView! 让我的应用随机崩溃,没有错误。

经验教训,扩展可能会引发该错误。