【问题标题】:Why SKProductsRequestDelegate/SKRequestDelegate didFailWithError throws EXC_BAD_ACCESS on NSError?为什么 SKProductsRequestDelegate/SKRequestDelegate didFailWithError 在 NSError 上抛出 EXC_BAD_ACCESS?
【发布时间】:2016-06-01 12:04:15
【问题描述】:

我使用SKProductsRequest 从 App Store 下载产品信息。 当我在我的设备上测试连接丢失时,请求失败,但是当我尝试 NSLog 错误时,我的应用程序在 SKRequestDelegate 内崩溃:

我做错了什么?另一个让我好奇的是,Expression Inspector 能够显示NSError.debugDescription...

它在第一次请求时失败,因此对于 productRequest 变量的多次使用没有可能的错误(这是我的 swift 类中的强引用)。

【问题讨论】:

    标签: ios swift nserror


    【解决方案1】:

    我终于找到了原因。与SKProductsRequest无关!

    我认为NSLog 和字符串插值存在一个讨厌的错误,因为当我替换时:

    NSLog("Failed: \(error.debugDescription)")
    

    通过

    print("Failed: \(error.debugDescription)")
    

    一切都好!

    显然,错误消息的内容会在 NSLog 中引发 EXC_BAD_ADDRESS(即使实际上没有字符串插值:NSLog(error.debugDescription) 也会失败)。


    相关回复:https://stackoverflow.com/a/29631505/249742

    NSLog("%@", error.debugDescription)

    似乎在任何情况下都可以正常工作。

    也许NSLog(variable) 是对NSLog 的误用,但我认为NSLog(\(variable)) 应该被解释为NSLog("%@", variable)。否则,没有可靠的方法可以使用 NSLog 快速方式 \() 插入字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-21
      • 2016-02-16
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多