ios - 无法在属性初始值设定项中将自己指定为委托(delegate)

标签 ios swift swift-playground

在初始化我的类的属性时,当我尝试访问 self 时,我收到一条奇怪的错误消息。好像我的类(class)有一个奇怪的类型。

这是错误:

Cannot assign a value of type 'ViewController -> () ViewController' to a value of type 'ModelControllerDelegate?'

这是代码, Playground 上的简单示例:

import Foundation
import UIKit

protocol ModelControllerDelegate
    {
    func modelControllerDidFinishTask()
    }

class ModelController
    {
    var delegate : ModelControllerDelegate?
    }

class ViewController : UIViewController, ModelControllerDelegate
    {
    var modelController : ModelController =
        {
        let controller = ModelController()
        controller.delegate = self
        return controller
        }()

    func modelControllerDidFinishTask()
        {

        }
    }

最佳答案

您正在尝试在未完全初始化时使用 self。如果您使用惰性初始化可能会起作用:

lazy var modelController : ModelController = { ...

关于ios - 无法在属性初始值设定项中将自己指定为委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31592636/

相关文章:

ios - 在 swift 3 playground 中阅读 plist

json - 无法获取路径 Swift Playground 错误的沙箱扩展

ios - Firebase queryEqual 不起作用

ios - 如何强制我的应用程序使用我的自定义键盘?

ios - WKWebView在swift3中与JS交互异常崩溃

swift - 二元运算符/不能应用于 Int 和 Double 类型的操作数

ios - 低延迟输入/输出音频队列

ios - collectionView 中的单元格重用错误

ios - 不允许创建操作

ios - TableView 取数据时向下移动