我创建了一个带有游戏商店视图和视图控制器的游戏。可以在菜单 (ViewController.m) 和游戏结束屏幕 (GameViewController.m) 中访问商店。
我的问题是,如果我在菜单中显示了商店一次,然后玩游戏并在游戏中通过屏幕访问商店并尝试购买东西,则应用程序崩溃并出现 EXC_BAD_ACCESS 错误而没有太多信息。(打破在
[[SKPaymentQueue defaultQueue] addPayment:lPayment];
尝试购买 IAP 时,在我的 ShopViewController 中的 ButtonPressed 操作中添加一行。
我的视图是这样设置的:
菜单视图 -> 梯形视图 -> 游戏视图 -> 商店视图
和
菜单视图 -> 商店视图
希望你能帮我找出错误,
编辑 - - - - - -
看来我可以在不使用游戏视图的情况下从菜单-> Shopview 重现错误。我可以通过按“购买按钮”、按取消、导航回菜单、返回商店并重复来做到这一点。在第 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;
当我删除商店视图时,试图在我重新加载商店时强制它再次分配它,但没有任何运气。
谢谢