ios 应用内购买获得 EXC_BAD_ACESS

ios InApp purchase getting EXC_BAD_ACESS

我在应用程序购买中工作,同时购买产品方法出现错误 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

}

根据错误消息,正在访问已释放的实例。它可能是 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,并且当我们再次查看时,它可能有一个指向先前实例的句柄,但它没有不存在。