而是考虑依赖注入。
理想的:
final class MutableVariables {
var firstVariable: String
var secondVariable: String
}
final class ViewController: UIViewController {
private var variables: MutableVariables
init(injectedDependency: MutableVariables) {
self.variables = injectedDependency
}
func doStuff() {
self.variables.firstVariable = "foo"
}
}
func startMyApp() {
let variables = MutableVariables() //keep hold of this somewhere
let viewController = ViewController(injectedDependency: variables)
present(viewController)
let anotherViewController = ViewController(injectedDependency: variables)
present(viewController)
}
但是既然你用的是一个带有segue的故事板:
final class ViewController: UIViewController {
private var variables: MutableVariables!
func inject(dependency: MutableVariables) {
self.variables = injectedDependency
}
func doStuff() {
self.variables.firstVariable = "foo"
}
}
final class MasterController {
let variables = MutableVariables()
func startMyApp() {
let viewController = ViewController()
present(viewController)
let anotherViewController = ViewController()
present(viewController)
}
func segueFinished(for viewController: ViewController) {
viewController.inject(dependency: self.variables)
}
}
ViewController
直接改变同一组变量。考虑拥有每一个
视图控制器
委托给某个父对象(即。
MasterController