2014-11-14 223 views
-1

我有一个应用程序内的问题。我的应用程序中有2个应用程序。但是,当我第一次购买,比我想购买第二次我的应用程序崩溃,它显示我错误Thread 1: EXC_BAD_ACCESS(code=1, address=0x10)。符合[[SKPaymentQueue defaultQueue] addPayment:payment];你能帮我吗?访问崩溃应用程序崩溃应用程序内ios

+0

显示更多的代码。 EXC_BAD_ACCESS是iOS上的常见崩溃,仅提供极少数调试线索。 – rdurand 2014-11-14 14:27:50

+0

如果我不得不猜测,我会说你已经失去了对过去在'付款'中持有的对象的引用。不过,你需要提供更多的上下文。 – 2014-11-14 14:39:07

+0

也启用僵尸模式进行调试。它看起来像物体被释放,但仍然 – rahulinaction 2014-11-14 16:39:43

回答

1

您提供的信息太少。仍然...

你在设置payment

SKPayment *payment = [SKPayment paymentWithProduct:product]; 

是否product存在,并且是类型SKProduct

此外,您无法创建SKProduct。 SKProducts作为请求响应。检查你的委托方法productsRequest:didReceiveResponse:

您应该通过设置断点来调试整个过程。那么你将能够提供更多的信息,以防你自己没有解决问题。

+0

对于很少的信息,我很抱歉上传完整的应用内代码,产品是SKProduct类型,并且存在。 http://pastebin.com/kTL8ZRqS – PatrikD 2014-11-14 17:03:42

+0

我在看你的代码。这不会解决您的问题,但您应该将应用程序内购买观察者设置为一个更普通的类,这个类可以随时访问(例如,您的应用程序委托类);否则,如果由于某种原因在下载过程中应用程序崩溃,产品将无法发送。除此之外,您不必多次设置观察者。除此之外,您是否注意到buyPackage总是购买相同的产品([validProducts objectAtIndex:0])?如果您是为了测试目的而这样做,validProducts是否与nil不同? – Leandro 2014-11-14 19:54:27

+0

问题是我不释放内存'[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];' – PatrikD 2014-11-16 08:12:03