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
实例化视图控制器,该视图控制器在应用程序启动时被调用一次

希望它能帮助别人