Почему SKProductsRequestDelegate/SKRequestDelegate didFailWithError выдает EXC_BAD_ACCESS при NSError?

Я использую SKProductsRequest для загрузки информации о продукте из App Store. Когда я проверяю потерю подключения на своем устройстве, запрос не выполняется, но мое приложение падает в SKRequestDelegate, когда я пытаюсь NSLog ошибиться:

сбой

Что я делаю неправильно ? Еще мне любопытно, что Expression Inspector может отображать NSError.debugDescription...

Он терпит неудачу при первом запросе, поэтому нет никакой возможной ошибки, связанной с многократным использованием переменной productRequest (которая является сильным ref в моем быстром классе).


person Eric Boumendil    schedule 01.06.2016    source источник


Ответы (1)


Я наконец нашел причину. Это не связано с SKProductsRequest!

Я думаю, что есть неприятная ошибка с интерполяцией строк NSLogand, потому что когда я заменяю:

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

by

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

Все хорошо!

Судя по всему, содержимое сообщения об ошибке может спровоцировать EXC_BAD_ADDRESS в NSLog (даже без интерполяции строк на самом деле: NSLog(error.debugDescription) тоже не работает).


Связанный ответ: https://stackoverflow.com/a/29631505/249742

NSLog("%@", error.debugDescription)

кажется, работает нормально в каждом случае.

Возможно, NSLog(variable) является неправильным использованием NSLog, но я думаю, что NSLog(\(variable)) следует интерпретировать как NSLog("%@", variable). В противном случае нет надежного способа интерполировать строки с помощью NSLog, используя быстрый способ \().

person Eric Boumendil    schedule 04.06.2016