2012-12-05 30 views
10

not much report on the crash[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];應用程序崩潰;

這就是我從碰撞獲得當我在applicationDidBecomeActive

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

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer]; 

做,但奇怪的是,我已經能夠在過去的購買兩次,即使我刪除的應用重新迴歸一切,我無法逃脫這個坑。它似乎不是邏輯。我可以單獨爲init分配觀察者,並且可以毫無問題地調用默認的paymentQueue,但如果我嘗試將事務觀察者添加到隊列中,則會停止。它在ARC上,我添加到觀察者的委託不是問題。我當然知道。

我已經添加了的NSLog在觀察者和無每一個方法

發現的解決方案在飛機墜毀前被調用

好,嗯,它看起來像觀察者不被隊列,從而保留觀察者需要是一個實例變量。

由於

+0

也許你應該添加您的解決方案作爲一個答案和:

內部框架Storekit的頭文件SKPaymentQueue.h被明確註釋以下將其標記爲解決方案,否則賞金將保持開放。 –

回答

10

好的,那麼它看起來像觀察者不被隊列保留,從而觀察者需要是一個實例變量(或保留以某種方式)。

+0

你可以給一些示例代碼嗎? –

+0

實例變量意味着您應該在對象上保留一個指針,以便它不會被釋放。您可以簡單地創建一個指向觀察者的屬性(強) –

1

要來的官方消息加入到這樣的回答:

// 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);