簡體   English   中英

Swift:無所有權不能應用於非類類型THETYPE->()-> THETYPE

[英]Swift: unowned cannot be applied to non-class type THETYPE -> () -> THETYPE

打開一個新的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 ,因為協議可讀性在類擴展中定義,以提高可讀性。)

這將產生兩個錯誤:

在第一行:

'unown'不能應用於非類類型'ViewController->()-> ViewController'

在最后一行:

無法使用參數列表()調用類型'()-> _'的值

這兩個錯誤對我來說都毫無意義。 它們是什么意思,我該如何解決。

您必須指定變量的類型:

private lazy var imagePicker: UIImagePickerController = {

這將修復您的兩個錯誤。

嘗試推斷類型時,編譯器只是感到困惑。 閉包可能太復雜了,所有類型推斷問題都以奇怪的錯誤消息結尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM