使用委托模式清理 VIP
Clean VIP with Delegate Pattern
我是 Clean VIP 架构的新手,我正在为它的入口点而苦苦挣扎。
(我只是放了一些代码)
ViewController
protocol Delegate: class {
func execute()
}
class TitlesViewController:UIViewController {
weak var delegate: Delegate?
func viewDidLoad() {
super.viewDidLoad()
delegate.execute()
}
}
配置器
class TitlesConfigurator {
static func configureModule(viewController: TitlesViewController) {
let interactor = Interaction()
viewController.delegate = interactor
}
}
在 AppDelegate 中
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let titlesViewController = TitlesViewController()
let navigationController = UINavigationController(rootViewController: titlesViewController)
TitlesConfigurator.configureModule(viewController: titlesViewController)
window = UIWindow()
window?.rootViewController = navigationController
window?.makeKeyAndVisible()
return true
}
现在我面临的问题是 TilesConfigurator
之外没有 interactor
的引用, delegate
是 weak
这意味着它的总数 arc
为 0。它导致 delegate = nil
在 viewDidLoad
中
我该如何改进或修复我的架构中的这个问题。
P.S:我认为在 ViewController
中强引用委托不是一个好习惯
代表不应该weak
在这里
var delegate: Delegate?
因为有一部分是 weak
是 let interactor = Interaction()
所以不会发生循环保留
我是 Clean VIP 架构的新手,我正在为它的入口点而苦苦挣扎。
(我只是放了一些代码)
ViewController
protocol Delegate: class {
func execute()
}
class TitlesViewController:UIViewController {
weak var delegate: Delegate?
func viewDidLoad() {
super.viewDidLoad()
delegate.execute()
}
}
配置器
class TitlesConfigurator {
static func configureModule(viewController: TitlesViewController) {
let interactor = Interaction()
viewController.delegate = interactor
}
}
在 AppDelegate 中
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let titlesViewController = TitlesViewController()
let navigationController = UINavigationController(rootViewController: titlesViewController)
TitlesConfigurator.configureModule(viewController: titlesViewController)
window = UIWindow()
window?.rootViewController = navigationController
window?.makeKeyAndVisible()
return true
}
现在我面临的问题是 TilesConfigurator
之外没有 interactor
的引用, delegate
是 weak
这意味着它的总数 arc
为 0。它导致 delegate = nil
在 viewDidLoad
我该如何改进或修复我的架构中的这个问题。
P.S:我认为在 ViewController
代表不应该weak
在这里
var delegate: Delegate?
因为有一部分是 weak
是 let interactor = Interaction()
所以不会发生循环保留