SKPaymentQueue崩溃' NotifyObserverAboutChanges'

时间:2016-11-04 08:03:38

标签: iphone swift xcode in-app-purchase

请耐心等待。

我是StoreKit的初学者,我对此非常艰难。

In App Purchase的配置全部完成,我已经设法进行了一些先前的测试。但是现在应用程序在启动后每隔一段时间就会崩溃。显然问题是这个错误:

* thread #1: tid = 0x38d39, 0x00000001902a4bb4 libobjc.A.dylib`lookUpImpOrForward + 80, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x1a10058f938)
    frame #0: 0x00000001902a4bb4 libobjc.A.dylib`lookUpImpOrForward + 80
    frame #1: 0x00000001902af258 libobjc.A.dylib`_objc_msgSend_uncached + 56
    frame #2: 0x000000019e2fa120 StoreKit`__NotifyObserverAboutChanges + 84
    frame #3: 0x000000019173b9a8 CoreFoundation`CFArrayApplyFunction + 68
    frame #4: 0x000000019e2fa0b0 StoreKit`-[SKPaymentQueue _notifyObserversAboutChanges:sendUpdatedDownloads:] + 148
    frame #5: 0x000000019e2fabec StoreKit`-[SKPaymentQueue _processUpdates:trimUnmatched:sendUpdatedDownloads:] + 1288
    frame #6: 0x000000019e2fb47c StoreKit`-[SKPaymentQueue _setTransactionsWithReply:] + 196
    frame #7: 0x000000019e2f9b2c StoreKit`__38-[SKPaymentQueue _establishConnection]_block_invoke_2 + 64
    frame #8: 0x0000000101ad525c libdispatch.dylib`_dispatch_call_block_and_release + 24
    frame #9: 0x0000000101ad521c libdispatch.dylib`_dispatch_client_callout + 16
    frame #10: 0x0000000101ada284 libdispatch.dylib`_dispatch_main_queue_callback_4CF + 1200
    frame #11: 0x000000019180ff2c CoreFoundation`__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
    frame #12: 0x000000019180db18 CoreFoundation`__CFRunLoopRun + 1660
    frame #13: 0x000000019173c048 CoreFoundation`CFRunLoopRunSpecific + 444
    frame #14: 0x00000001931c2198 GraphicsServices`GSEventRunModal + 180
    frame #15: 0x00000001977282fc UIKit`-[UIApplication _run] + 684
    frame #16: 0x0000000197723034 UIKit`UIApplicationMain + 208
  * frame #17: 0x000000010010b8b8 Otelo`main + 140 at AppDelegate.swift:17
    frame #18: 0x00000001907205b8 libdyld.dylib`start + 4

我试图使用乐器寻找僵尸,我得到了这样的信息:

  

将Objective-C消息发送给已解除分配的OneSignalTrackIAP'   对象(僵尸)地址:0x170017100。

此活动详情:

Instruments Stack Trace

所以大概是这个错误来自于这个" __ NotifyObserverAboutChanges"。

我不知道该怎么做。我删除了所有以某种方式链接到StoreKit的pod以及我在In App Purchases中的所有方法和类,但是这个错误仍在继续。显然,我的推送通知提供商OneSignal有这个In App Purchase Tracker,它正在引发这次崩溃。

如果有人能让我了解我应该做些什么,我真的很感激。我现在想把头撞到墙上。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您很可能不会从视图控制器中删除事务观察器。因此,当用户关闭页面然后再次打开它时,它会尝试将事务发送到两个视图控制器(现有的和旧的仍在内存中)并崩溃。