![](/img/trans.png)
[英]Child view controller's viewDidLoad is being called before parent view controller's?
[英]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
仍在以某种方式重新加载。
我究竟做错了什么? 有任何想法吗? 谢谢!
好吧,显然我从AppDelegate
的applicationDidBecomeActive
实例化了UIViewController
SubscribeVC
。 当StoreKit的alert被解除后,再次调用applicationDidBecomeActive
,重新实例化SubscribeVC
并将AppDelegate's
window.rootViewController
重新分配给新实例化的VC,导致原来的VC从memory释放。
解决方案是从didFinishLaunchingWithOptions
实例化视图 controller ,该视图在应用程序启动时被调用一次。
希望它会帮助某人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.