我使用SKProductsRequest
从App Store下载产品信息。
当我在设备上测试连接丢失时,请求失败,但当我尝试SKRequestDelegate
错误时,我的应用在NSLog
内崩溃:
我做错了什么?另一个奇怪的事情是Expression Inspector能够显示NSError.debugDescription
...
第一次请求失败,因此没有可能的bug相对于productRequest变量的多次使用(这是我的swift类中的强引用)。
答案 0 :(得分:2)
我终于找到了原因。它与SKProductsRequest
无关。
我认为NSLog
和字符串插值存在一个令人讨厌的错误,因为当我替换:
NSLog("Failed: \(error.debugDescription)")
通过
print("Failed: \(error.debugDescription)")
一切都很好!
显然,错误消息的内容可能在NSLog中引发EXC_BAD_ADDRESS(事实上即使没有字符串插值:NSLog(error.debugDescription)
也会失败)。
相关的anwser:https://stackoverflow.com/a/29631505/249742
NSLog("%@", error.debugDescription)
似乎在每种情况下都能正常工作。
也许NSLog(variable)
是对NSLog的滥用,但我认为NSLog(\(variable))
应该被解释为NSLog("%@", variable)
。否则,没有可靠的方法使用快速方式\()
使用NSLog插入字符串。