我遇到了一个弱引用的奇怪问题。我使用的是协调器模式,子VC通过代理与协调器进行通信。每当我将一个新的VC推送到导航堆栈时,我都会将VC的委托设置为一致性协调器。在iOS 13/14上,一切都很完美,但在iOS 12设备上测试时,参考号会丢失。从委托变量中删除"弱"时,一切正常,但此解决方案不是最优的。
我使用swift 5,我真的希望它不会成为问题。请帮忙;(
问题已经解决,我没有保留对我的主协调器的引用,这导致了这个问题。在iOS 13的SceneDelegate中,它被保留了下来,我忘了在App Delegate 中做同样的事情
var window: UIWindow?
var mainCoordinator: MainCoordinator?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
application.accessibilityLanguage = "pl-PL"
if #available(iOS 13, *) {
} else {
window = UIWindow(frame: UIScreen.main.bounds)
let navigationController = UINavigationController()
mainCoordinator = MainCoordinator(navigationController)
mainCoordinator?.start()
window?.rootViewController = navigationController
window?.makeKeyAndVisible()
}
return true
}