iOS:解除子视图控制器会导致再次调用viewDidLoad
我有一个视图控制器,iOS:解除子视图控制器会导致再次调用viewDidLoad,ios,dismissviewcontroller,Ios,Dismissviewcontroller,我有一个视图控制器,SubscribeVC,它使用注入其中的应用程序购买服务。用户启动购买逻辑,在此过程中,StoreKit显示关于即将进行的购买的一些UIAlertControllers。在视图控制器上,我持有对(InAppPurchases)服务的强引用,并调用一个函数,该函数具有购买完成时的完成处理程序 问题是,当用户解除StoreKit的警报时,它会使SubscribeVC重新加载(调用viewDidLoad等),并使完成处理程序在完成时导致EXC\u BAD\u ACCESS错误(因为
SubscribeVC
,它使用注入其中的应用程序购买服务。用户启动购买逻辑,在此过程中,StoreKit
显示关于即将进行的购买的一些UIAlertControllers
。在视图控制器上,我持有对(InAppPurchases)服务的强引用,并调用一个函数,该函数具有购买完成时的完成处理程序
问题是,当用户解除StoreKit的警报时,它会使SubscribeVC
重新加载(调用viewDidLoad等),并使完成处理程序在完成时导致EXC\u BAD\u ACCESS
错误(因为它是在VC实例运行时释放的)
我通过AppDelegate打开了SubscribeVC
,我还试图从InAppPurchases服务中保存一个对SubscribeVC
实例的强引用,但没有任何帮助,SubscribeVC
仍在以某种方式重新加载
我做错了什么?有什么想法吗?谢谢 显然,我从
AppDelegate
的applicationidbecomeactive
实例化了UIViewController
SubscribeVC
。当StoreKit的警报被解除时,再次调用ApplicationIDBecMeactive
,重新实例化SubscribeVC
,并将AppDelegate的窗口.rootViewController
重新分配给新实例化的VC,这导致原始VC从内存中释放
解决方案是从didFinishLaunchingWithOptions
实例化视图控制器,该视图控制器在应用程序启动时被调用一次
希望它能帮助别人