ゲーム内のショップビューとビューコントローラーを使用してゲームを作成しました。ショップには、メニュー(ViewController.m)およびゲームオーバー画面(GameViewController.m)からアクセスできます。
私の問題は、メニューに一度ショップを表示してから、ゲームをプレイし、ゲームオーバー画面でショップにアクセスして何かを購入しようとすると、アプリがクラッシュして、多くの情報がない状態でEXC_BAD_ACCESSエラーが発生することです。(で壊す
[[SKPaymentQueue defaultQueue] addPayment:lPayment];
IAPを購入しようとしたときに、ShopViewControllerのButtonPressedアクションの行。
私の見解は次のように設定されています。
メニュービュー->ラダービュー->ゲームビュー->ショップビュー
と
メニュービュー->ショップビュー
エラーを特定するのを手伝っていただければ幸いです。
編集 - - - - - -
ゲームビューを使わなくても、メニュー→ショップビューからエラーを再現できるようです。これを行うには、「購入ボタン」を押し、キャンセルを押し、メニューに戻り、ショップに戻って、繰り返します。3〜4回目の試行で、同じ行でクラッシュします。ボタンを押す方法全体を次に示します。
- (void)buyButtonPressed:(UIButton *)pButton {
NSInteger lTag = [pButton tag];
//////NSLog(@"Button tag: %i"), lTag;
Reachability *lReachability = [Reachability reachabilityForInternetConnection];
NetworkStatus lCurrentNetworkStatus = [lReachability currentReachabilityStatus];
if (lCurrentNetworkStatus != NotReachable) {
if ([SKPaymentQueue canMakePayments]) {
SKPayment *lPayment = [SKPayment paymentWithProduct:[mPriceArray objectAtIndex:lTag]];
[[SKPaymentQueue defaultQueue] addPayment:lPayment];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
} else {
[self showAlertViewWithText:@"Purchases are disabled. Please check your settings for General -> Restrictions -> In-App Purchases and try again." andTitle:@"Warning"];
}
} else {
[self showAlertViewWithText:@"No network connection!" andTitle:@"Warning"];
}
}
したがって、lPaymentの割り当てが解除されているように見える場合があります。私も設定しようとしました
mProductIds = nil;
mPriceArray = nil;
ショップビューを削除したときに、ショップをリロードするときに強制的に再度割り当てようとしましたが、運がありませんでした。
ありがとう