iOS: 子视图控制器关闭导致 viewDidLoad 被再次调用
iOS: Child View Controller dismissal causes viewDidLoad to be called again
我有一个视图控制器 SubscribeVC
,它使用注入其中的 InAppPurchases 服务。用户启动购买逻辑,在此过程中,StoreKit
显示很少 UIAlertControllers
关于即将进行的购买。在视图控制器上,我强烈引用了 (InAppPurchases) 服务,并在购买完成时调用了一个具有完成处理程序的函数。
问题是,当用户关闭 StoreKit 的警报时,它会使 SubscribeVC
重新加载(调用 viewDidLoad 等),并导致完成处理程序导致 EXC_BAD_ACCESS
错误(因为它在 VC 实例完成时被释放。
我通过 AppDelegate 打开 SubscribeVC
,我还尝试在 InAppPurchases 服务中保持对 SubscribeVC
实例的强引用,但没有任何帮助,SubscribeVC
仍在重新加载一些如何。
我做错了什么?有任何想法吗?谢谢!
显然我从 AppDelegate
的 applicationDidBecomeActive
实例化了 UIViewController
SubscribeVC
。当StoreKit的alert被解除后,applicationDidBecomeActive
又被调用了,重新实例化了SubscribeVC
并且重新赋值了AppDelegate's
window.rootViewController
给新实例化的VC,导致原来的VC 从内存中释放。
解决方案是从 didFinishLaunchingWithOptions
实例化视图控制器,它在应用程序启动时被调用一次。
希望它能对某人有所帮助。
我有一个视图控制器 SubscribeVC
,它使用注入其中的 InAppPurchases 服务。用户启动购买逻辑,在此过程中,StoreKit
显示很少 UIAlertControllers
关于即将进行的购买。在视图控制器上,我强烈引用了 (InAppPurchases) 服务,并在购买完成时调用了一个具有完成处理程序的函数。
问题是,当用户关闭 StoreKit 的警报时,它会使 SubscribeVC
重新加载(调用 viewDidLoad 等),并导致完成处理程序导致 EXC_BAD_ACCESS
错误(因为它在 VC 实例完成时被释放。
我通过 AppDelegate 打开 SubscribeVC
,我还尝试在 InAppPurchases 服务中保持对 SubscribeVC
实例的强引用,但没有任何帮助,SubscribeVC
仍在重新加载一些如何。
我做错了什么?有任何想法吗?谢谢!
显然我从 AppDelegate
的 applicationDidBecomeActive
实例化了 UIViewController
SubscribeVC
。当StoreKit的alert被解除后,applicationDidBecomeActive
又被调用了,重新实例化了SubscribeVC
并且重新赋值了AppDelegate's
window.rootViewController
给新实例化的VC,导致原来的VC 从内存中释放。
解决方案是从 didFinishLaunchingWithOptions
实例化视图控制器,它在应用程序启动时被调用一次。
希望它能对某人有所帮助。