我只是偶然关于我的应用程序的一个问题:我测试了didReceiveMemoryWarning
呼叫转移至UIViewController
包括后续的呼叫viewDidUnload
.
这曾经在我的应用程序的旧版本中正常工作,但现在在iPhone模拟器中无法正常工作:
didReceiveMemoryWarning
不再被调用.
这是通过调用造成[NSNotificationCenter defaultCenter] removeObserver:self]
的viewWillDisappear
(自我作为的UIViewController)来注销了一些生命周期通知我并在补充viewDidAppear
.
该全局removeObserver:
调用不仅删除了我添加的通知,而且显然系统的UIApplicationDidReceiveMemoryWarningNotification通知也导致didReceiveMemoryWarning
调用UIViewController .
这种行为是设计的吗?我找不到一个指出的参考/文档,removeObserver:
在UIViewController 中调用会破坏标准的memoryWarning处理.
当应用程序处于后台并且用户尚未登录到商店时,我在应用程序购买(沙箱环境)中取消用户时出现了一些奇怪的行为:
过程如下:
[[SKPaymentQueue defaultQueue] addPayment:payment];
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
,但不会.TX仍处于国家采购阶段.如果testuser已经登录到商店,则此过程不同.在这种情况下,上述过程按预期工作.
另一句话:经过上述步骤,我实际上购买了另一个应用程序内项目(包括登录到appstore).在此之后,我将应用程序发送到后台并重新激活它,它将处理缺少的取消事务.
结论: 当应用程序处于后台并且未登录到商店时,用户取消付款tx会导致storekit回调延迟交付.在用户实际登录到appstore之后完成交付,并且通过重新激活应用程序来触发PaymentQueue进程.
这种行为似乎是错误的,如果在实际环境中实际上是这样,我可能会认为这是一个Storekit错误.是否有人经历过相同的行为或者可以指出某些事情以防止tx在购买状态中"悬挂"?
谢谢,马库斯