Swift:unowned不能应用于非类型THETYPE - > () - >类型

时间:2015-12-27 21:37:34

标签: swift

打开一个新的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
}()

(我们使用协议一致性重新构造self,因为协议一致性是在类扩展中定义的,以便于阅读。)

这会产生两个错误:

在第一行:

  

&#39;无主&#39;不能应用于非类类型&#39; ViewController - &gt; () - &gt;的ViewController&#39;

并在最后一行:

  

无法调用&#39;() - &gt;类型的值_&#39; with argument list()&#39;

这两个错误对我都没有意义。他们是什么意思,我该如何解决它们。

1 个答案:

答案 0 :(得分:1)

您必须指定变量的类型:

private lazy var imagePicker: UIImagePickerController = {

这将解决您的两个错误。

编译器在尝试推断类型时感到困惑。关闭可能过于复杂,所有类型推断问题都以奇怪的错误消息结束。