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,并且当我们再次查看时,它可能有一个指向先前实例的句柄,但它没有不存在。
我在应用程序购买中工作,同时购买产品方法出现错误 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,并且当我们再次查看时,它可能有一个指向先前实例的句柄,但它没有不存在。