ios在App购买获得EXC_BAD_ACCESS

时间:2015-03-23 10:29:05

标签: ios storekit

我在购买应用内购买产品方法时遇到错误 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

}

1 个答案:

答案 0 :(得分: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中添加self,而关闭视图时不会删除TransactionObserve,而当我们查看它时,它可能会有一个不存在的前一个实例的句柄