2016-06-01 3 views
2

私はSKProductsRequestを使ってApp Storeから製品情報をダウンロードしています。 SKRequestDelegate内 私は私のデバイス上の接続性の損失をテストする場合、要求は失敗しますが、私のアプリがクラッシュし、私はNSLogエラーにしてみてください:なぜSKProductsRequestDelegate/SKRequestDelegate didFailWithRossがNSErrorにEXC_BAD_ACCESSをスローするのですか?

crash

私が間違って何をしているのですか?私にとってもう一つ興味深いのは、Expression InspectorがNSError.debugDescriptionを表示できるということです。

これは最初のリクエストで失敗するため、productRequest変数の複数の使用に関連するバグはありません。クラス)。

答えて

2

私はようやくその理由を発見しました。 SKProductsRequestに関連していません!

私は交換するときのでNSLogと文字列の補間と厄介なバグがあると思う:

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

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

によってすべてが素晴らしいです!

明らかに、エラーメッセージの内容は、NSLog(文字列補間なしでも、実際には:NSLog(error.debugDescription)も失敗する)でEXC_BAD_ADDRESSを引き起こす可能性があります。


関連anwser:https://stackoverflow.com/a/29631505/249742

NSLog("%@", error.debugDescription)

は、すべてのケースで正常に動作するようです。

おそらくNSLog(variable)はNSLogの悪用ですが、私はNSLog(\(variable))NSLog("%@", variable)のように解釈されるべきだと思います。そうでなければ、迅速な方法で文字列をNSLogで補間する信頼できる方法はありません\()

関連する問題