如何在 Swift 中的 "model" 组件中设置委托视图控制器 class

How to set a delegate view controller class in a "model" component in Swift

我在 Swift 中有一个视图控制器 class,其中视图是一个单独的 class,我通过插座将其连接到视图控制器。这允许我在 didset 方法中将视图控制器 class 设置为视图的委托:

@IBOutlet theView: ViewClass! {
    didSet {
        theView.delegate = self;
    }
}

但我也尝试将我的大部分应用程序后端逻辑分离到一个单独的 class(MVC 中的模型),我在我的视图控制器中创建它,如下所示:

let logic = Logic()

但是我没有好的方法让 Logic 做一些后台工作并通知我的视图控制器。同样,我想将视图控制器作为委托 class 传递给 Logic。最好的地方在哪里?如果我尝试在 MyViewController 中执行此操作,我会收到一个奇怪的 "invalid argument type list" 错误:

let logic = Logic(self)

大概是因为 self 的初始化顺序? place/best 正确的做法是什么?

我建议你看看斯坦福大学的这门课程,看看 MVC 讲座:https://itunes.apple.com/gb/course/developing-ios-8-apps-swift/id961180099

他们建议使用 NSNotifcations 让您的控制器知道模型中的更改,并且仅使用委托来通知视图中的更改。看看这个以了解有关 NSNotifcation 的更多信息:http://www.andrewcbancroft.com/2014/10/08/fundamentals-of-nsnotificationcenter-in-swift/