10

关于坠机的报道不多

这就是我在车祸中所能得到的一切applicationDidBecomeActive

MyStoreObserver * observer = [[MyStoreObserver alloc] initWithContext:self.managedObjectContext andDelegate:self];

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

但奇怪的是我过去可以购买两次,即使我删除了应用程序,我也无法摆脱这个坑。这似乎不合逻辑。我可以单独分配初始化观察者没有问题,我可以毫无问题地调用默认的paymentQueue,但是如果我尝试将事务观察者添加到队列中,生命就会停止。它在 ARC 上,我添加到观察者的代表不是问题。我肯定知道。

我已经为观察者中的每个方法添加了一个 nslog,并且在崩溃之前没有一个被调用

找到解决方案

好的,看起来观察者没有被队列保留,因此观察者需要是一个实例变量。

谢谢

4

2 回答 2

10

好的,看起来观察者没有被队列保留,因此观察者需要是一个实例变量(或以某种方式保留)。

于 2013-07-30T18:34:45.603 回答
1

要为此答案添加官方来源:

在 Framework Storekit 的头文件 SKPaymentQueue.h 中,有以下清晰的注释:

// Observers are not retained.
// The transactions array will only be synchronized with the server while the queue has observers.
// This may require that the user authenticate.
- (void)addTransactionObserver:(id <SKPaymentTransactionObserver>)observer __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
于 2013-07-31T23:48:46.330 回答