打开一个新的 Swift 项目并将其添加到 ViewController.swift:
private lazy var imagePicker = {
[unowned self] in
let retval = UIImagePickerController()
let selfDelegate = self as! protocol<UIImagePickerControllerDelegate, UINavigationControllerDelegate>
retval.delegate = selfDelegate
retval.allowsEditing = true
return retval
}()
(我们使用协议(protocol)一致性来重新构建 self
,因为协议(protocol)一致性是在类扩展中定义的,以提高可读性。)
这会产生两个错误:
第一行:
'unowned' cannot be applied to non-class type 'ViewController -> () -> ViewController'
最后一行:
Cannot invoke value of type '() -> _' with argument list ()'
这两个错误对我来说毫无意义。它们是什么意思以及我该如何解决它们。
最佳答案
您必须指定变量的类型:
private lazy var imagePicker: UIImagePickerController = {
这将解决您的两个错误。
编译器在尝试推断类型时感到困惑。闭包对于它来说可能太复杂了,所有类型推断问题都以奇怪的错误消息结束。
关于Swift:无主不能应用于非类类型 THETYPE -> () -> THETYPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485080/