-1

我有一个视图控制器,SubscribeVC它使用注入其中的 InAppPurchases 服务。用户启动购买逻辑,并且在此过程中,StoreKit很少显示UIAlertControllers关于即将进行的购买。在视图控制器上,我持有对 (InAppPurchases) 服务的强引用,并调用一个函数,该函数在购买完成时具有完成处理程序。

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

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

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

4

1 回答 1

-1

显然我实例化了UIViewController SubscribeVCfrom applicationDidBecomeActiveAppDelegate当 StoreKit 的警报被解除时,applicationDidBecomeActive 再次被调用,重新实例化SubscribeVC并重新分配AppDelegate's window.rootViewController给新实例化的 VC,这导致原始 VC 从内存中释放。

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

希望它会帮助某人。

于 2019-10-18T13:28:57.677 回答