Skip to content

Instantly share code, notes, and snippets.

@noppefoxwolf
Created September 27, 2019 05:02
Show Gist options
  • Save noppefoxwolf/80c6f07c28719e0e071c4ba34e7e899a to your computer and use it in GitHub Desktop.
Save noppefoxwolf/80c6f07c28719e0e071c4ba34e7e899a to your computer and use it in GitHub Desktop.
Generambaのswift_viperテンプレートで起こりうるクラッシュ
class RootViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .red
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
let vc = ViewController.make()
present(vc, animated: true, completion: nil)
}
}
class ViewController: UIViewController {
var output: Presenter!
static func make() -> ViewController {
let vc = ViewController()
let interactor = Interactor()
let presenter = Presenter()
presenter.interactor = interactor
presenter.view = vc
interactor.output = presenter
vc.output = presenter
return vc
}
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .blue
output.viewDidLoad()
}
func changeBackgroundColor() {
view.backgroundColor = .green
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
dismiss(animated: true, completion: nil)
}
}
class Presenter {
weak var view: ViewController!
var interactor: Interactor!
func viewDidLoad() {
interactor.request()
}
func didReceivedResponse() {
view.changeBackgroundColor()
}
}
class Interactor {
weak var output: Presenter!
func request() {
DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) { [weak self] in
self?.output.didReceivedResponse()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment