小编mar*_*cus的帖子

NSNotificationCenter removeObserver:取消注册VC以接收内存警报通知吗?

我只是偶然关于我的应用程序的一个问题:我测试了didReceiveMemoryWarning呼叫转移至UIViewController包括后续的呼叫viewDidUnload.

这曾经在我的应用程序的旧版本中正常工作,但现在在iPhone模拟器中无法正常工作: didReceiveMemoryWarning不再被调用.

这是通过调用造成[NSNotificationCenter defaultCenter] removeObserver:self]viewWillDisappear(自我作为的UIViewController)来注销了一些生命周期通知我并在补充viewDidAppear.

该全局removeObserver:调用不仅删除了我添加的通知,而且显然系统的UIApplicationDidReceiveMemoryWarningNotification通知也导致didReceiveMemoryWarning调用UIViewController .

这种行为是设计的吗?我找不到一个指出的参考/文档,removeObserver:在UIViewController 中调用会破坏标准的memoryWarning处理.

iphone objective-c ios

12
推荐指数
1
解决办法
5889
查看次数

在App Purchase中,用户在后台取消tx:tx状态保持购买状态

当应用程序处于后台并且用户尚未登录到商店时,我在应用程序购买(沙箱环境)中取消用户时出现了一些奇怪的行为:

过程如下:

  • 用户未登录/应用程序ID未在"设置">"存储"中设置
  • 用户点击购买按钮.这叫[[SKPaymentQueue defaultQueue] addPayment:payment];
  • 用户立即推出主页按钮(应用程序转到后台)
  • Storekit弹出窗口显示要求确认购买.用户取消
  • 应用程序再次激活,并期望收到- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions,但不会.TX仍处于国家采购阶段.

如果testuser已经登录到商店,则此过程不同.在这种情况下,上述过程按预期工作.

另一句话:经过上述步骤,我实际上购买了另一个应用程序内项目(包括登录到appstore).在此之后,我将应用程序发送到后台并重新激活它,它将处理缺少的取消事务.

结论: 当应用程序处于后台并且未登录到商店时,用户取消付款tx会导致storekit回调延迟交付.在用户实际登录到appstore之后完成交付,并且通过重新激活应用程序来触发PaymentQueue进程.

这种行为似乎是错误的,如果在实际环境中实际上是这样,我可能会认为这是一个Storekit错误.是否有人经历过相同的行为或者可以指出某些事情以防止tx在购买状态中"悬挂"?

谢谢,马库斯

iphone storekit in-app-purchase ios

7
推荐指数
1
解决办法
1460
查看次数

标签 统计

ios ×2

iphone ×2

in-app-purchase ×1

objective-c ×1

storekit ×1