0

我已经弄清楚了所有 StoreKit 的工作原理,并实际测试了工作代码……但是,我有一个问题。

我制作了我的“商店”层/场景SKProductsRequestDelegate。这是正确的做法吗?我得到这样的初始产品信息:

SKProductsRequest *productRequest = [[SKProductsRequest alloc] initWithProductIdentifiers: productIDs];

[productRequest setDelegate: self];
[productRequest start];

问题是,如果我在请求进行时转换到新场景,则 productRequest 会保留当前层。这意味着我的新场景/图层上的触摸由新图层和旧图层处理。

我可以在离开现场时取消 productRequest,但是:

  1. 我不知道当时它是否正在进行中。
  2. 我无法释放它,因为请求代表可能会或可能不会释放它。

必须有更好的方法来做到这一点。我可以使委托成为当前层外部的类,但是当调用处理程序时,我不知道如何使用产品信息轻松更新层。

4

1 回答 1

0

好的,问题解决了....呃。

  1. 我继续将 store 设置为一个单独的类,并通过向该类添加一个委托来解决场景回调问题,该委托包含 Store 接口的层。事务完成后,我可以使用委托回调我的场景/图层。

  2. respondsToSelector:在尝试向其发送消息之前,我通过使用该方法解决了不知道委托是否已被释放的问题。

  3. 事实证明,真正的错误是由我首先尝试修复 1 和 2 引起的。我超越onExit让我知道何时删除该类作为商店代表。原来我忘了打电话[super onExit],这是释放场景的地方。因此,它保持保留,并没有从 touchHandler 中删除。哎呀!

于 2010-05-08T19:57:02.627 回答