应用程序崩溃[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

时间:2012-12-05 20:47:55

标签: iphone ios storekit

not much report on the crash

当我在applicationDidBecomeActive

时,我可以从崩溃中获得所有这些
MyStoreObserver * observer = [[MyStoreObserver alloc] initWithContext:self.managedObjectContext andDelegate:self];

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

但奇怪的是,我过去已经能够购买两次了,即使我删除了应用程序重新恢复的一切,我也无法逃脱这个坑。这似乎不合逻辑。我可以毫无问题地单独为init分配观察者,我可以毫无问题地调用默认的paymentQueue但是如果我尝试将事务观察者添加到队列中,则生命停止。它在ARC上,我添加给观察者的代表不是问题。我肯定知道。

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

解决方案

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

由于

2 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分: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);