【问题标题】:Thread1: SIGABRT when using pushPaymentMethodsViewController() from StripeThread1:使用 Stripe 的 pushPaymentMethodsViewController() 时的 SIGABRT
【发布时间】:2018-12-16 15:00:35
【问题描述】:

我正在尝试从我的 ios 应用程序推送 Swift PaymentMethodsViewController()。 Swift 文档建议使用以下代码执行此操作:

self.paymentContext.pushPaymentMethodsViewController()

当我运行这段代码时,我得到:

Thread 1: signal SIGABRT

通常这意味着在情节提要中没有正确设置某些内容。我已经测试了将行删除到 pushPaymentMethodsViewController() 以确保我没有遇到旧连接的问题,并且没有收到任何错误,这让我认为问题与该行直接相关:

self.paymentContext.pushPaymentMethodsViewController()

我正在为此应用程序使用情节提要。我是否必须在情节提要中进行任何设置才能使其正常工作?我认为我的委托功能设置正确。关于如何解决这个问题的任何想法?尝试清洁和重新运行,没有运气。

这是调试器的完整输出。我没有发现它特别有用,但在评论中要求它:

libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x0000000110cfbb6e libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x0000000110d35080 libsystem_pthread.dylib`pthread_kill + 333
    frame #2: 0x0000000110956c97 libsystem_c.dylib`abort + 127
    frame #3: 0x00000001106e4e6f libc++abi.dylib`abort_message + 245
    frame #4: 0x00000001106e500b libc++abi.dylib`default_terminate_handler() + 265
    frame #5: 0x000000010b71f2ae libobjc.A.dylib`_objc_terminate() + 97
    frame #6: 0x00000001107020ae libc++abi.dylib`std::__terminate(void (*)()) + 8
    frame #7: 0x0000000110701d56 libc++abi.dylib`__cxa_rethrow + 99
    frame #8: 0x000000010b71f1cc libobjc.A.dylib`objc_exception_rethrow + 40
    frame #9: 0x000000010f6d3399 CoreFoundation`CFRunLoopRunSpecific + 777
    frame #10: 0x00000001147baa73 GraphicsServices`GSEventRunModal + 62
    frame #11: 0x000000010c242057 UIKit`UIApplicationMain + 159
  * frame #12: 0x000000010aaa06c7 Spotbirdparking`main at AppDelegate.swift:14
    frame #13: 0x0000000110884955 libdyld.dylib`start + 1
    frame #14: 0x0000000110884955 libdyld.dylib`start + 1
(lldb) 

【问题讨论】:

  • 调试器/控制台中是否有错误文本?如果可以,可以给吗?
  • 在 Stripe 的 example app 中,他们使用 [weak self]self?,你试过吗?

标签: ios swift xcode stripe-payments


【解决方案1】:

SIGABRT 是否在 pushPaymentMethodsViewController() 被调用后立即被触发?

如果可以,您可以检查一下,在您调用的视图控制器中:

self.paymentContext.pushPaymentMethodsViewController()

paymentContext 实例上的 hostViewController property 正确设置如下(在您创建 paymentContext 实例之后):

self.paymentContext.hostViewController = self

如果这没有帮助,我建议您在调用pushPaymentMethodsViewController() 的位置设置一个断点,然后介入调用以检查失败的确切位置。

【讨论】:

    猜你喜欢
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多