2015-03-23 3 views
0

Я работаю в покупке приложения при покупке способа получения продукта ошибки EXC_BAD_ACESSИОС InApp покупка получать EXC_BAD_ACESS

-(void)buyProduct:(SKProduct *)product { 

NSLog(@"Buying %@...", product.productIdentifier); 

SKPayment * payment = [SKPayment paymentWithProduct:product]; 
[[SKPaymentQueue defaultQueue] addPayment:payment]; //GETTING BAD ACEESS FOR THIS LINE 

}

+0

code code corrected –

+0

У вас есть в вашем коде addTransactionObserver для [SKPaymentQueue defaultQueue]? Если это так, посмотрите, добавили ли вы также метод удаления наблюдателя. Если вы забыли удалить или удалить, используйте removeTransactionObserver. – user3344236

ответ

0

В соответствии с сообщением об ошибке отпущенного экземпляр осуществляется доступом. Это может быть пример SKProduct, я не могу точно сказать причину с вышеуказанными парами заявлений, но в целом вы должны следить за тем, чтобы вы выполняли следующие шаги, связанные с iAP:

1) Создать сохраненный экземпляр SKProduct и SKProductsRequest

@property (retain, nonatomic) SKProduct *productID; 
@property (retain, nonatomic) SKProductsRequest *productsRequest; 

2) В viewDidLoad добавить заявление

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 

3) В методе dealloc добавить утверждение

[[SKPaymentQueue defaultQueue] removeTransactionObserver: self];

Примечание. Может случиться так, что при открытии представления вы добавляете себя в addTransactionObserver, в то время как закрытие представления не удаляет TransactionObserve, и снова, когда мы приходим к нему, он может иметь дескриптор предыдущего экземпляра, который не существовать.

Смежные вопросы