繁体   English   中英

iOS:子视图 Controller 解雇导致再次调用 viewDidLoad

[英]iOS: Child View Controller dismissal causes viewDidLoad to be called again

我有一个视图 controller, SubscribeVC ,它使用注入其中的 InAppPurchases 服务。 用户启动购买逻辑,在此过程中, StoreKit显示了一些关于即将进行的购买的UIAlertControllers 在 controller 视图上,我强烈引用(InAppPurchases)服务,并调用 function ,它具有购买完成时的完成处理程序。

问题在于,当用户关闭 StoreKit 的警报时,它会重新加载SubscribeVC (调用 viewDidLoad 等),并在完成时导致完成处理程序导致EXC_BAD_ACCESS错误(因为它在 VC 实例被释放时被释放)。

我通过 AppDelegate 打开了SubscribeVC ,我还尝试在 InAppPurchases 服务中保持对SubscribeVC实例的强引用,但没有任何帮助, SubscribeVC仍在以某种方式重新加载。

我究竟做错了什么? 有任何想法吗? 谢谢!

好吧,显然我从AppDelegateapplicationDidBecomeActive实例化了UIViewController SubscribeVC 当StoreKit的alert被解除后,再次调用applicationDidBecomeActive ,重新实例化SubscribeVC并将AppDelegate's window.rootViewController重新分配给新实例化的VC,导致原来的VC从memory释放。

解决方案是从didFinishLaunchingWithOptions实例化视图 controller ,该视图在应用程序启动时被调用一次。

希望它会帮助某人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM