我在购买应用内购买产品方法时遇到错误 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 :(得分: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,而当我们查看它时,它可能会有一个不存在的前一个实例的句柄