当我在我的类上初始化属性时尝试访问self时,收到一条奇怪的错误消息。看起来我的班级有一种奇怪的类型。
这是错误:
Cannot assign a value of type 'ViewController -> () ViewController' to a value of type 'ModelControllerDelegate?'
这是操场上的代码,简单示例:
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()
{
}
}
答案 0 :(得分:3)
您未尝试完全初始化时尝试使用self
。如果你使用懒惰的初始化,可能会工作:
lazy var modelController : ModelController = { ...
答案 1 :(得分:2)
当使用这样的闭包初始化属性时,闭包在实例完全初始化之前运行。这意味着你可以在这里做一些事情:
要解决此问题,您可以在ViewController的init中完全初始化modelController,或者至少推迟其委托的设置。