Короче говоря, [NSURL URLWithString:]
, похоже, вызывает исключение. Согласно документации «Если строка была искажена, возвращается ноль». Нет никаких упоминаний об исключении, выдвигаемом ни при каких обстоятельствах. В дополнение к этому, я одновременно кодирую URL и проверяю nil
перед преобразованием строки в URL.
Может ли кто-нибудь предложить какой-либо совет относительно того, какое это может быть исключение или какую другую проверку ошибок я должен выполнить перед преобразованием URL-адреса?
Если вас интересуют подробности, код вызова выглядит следующим образом:
NSString* tmpText = [newUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if (tmpText == nil) {
// error handling
}
else {
NSURL* tmpURL = [NSURL URLWithString:tmpText];
А это раздел из отчета о сбое загрузки из iTunes Connect:
8 libobjc.A.dylib 0x300c1f84 objc_exception_throw
9 CoreFoundation 0x3029a598 +[NSException raise:format:arguments:]
10 CoreFoundation 0x3029a538 +[NSException raise:format:]
11 Foundation 0x30696dde -[NSURL initWithString:relativeToURL:]
12 Foundation 0x30696cd8 +[NSURL URLWithString:relativeToURL:]
13 Foundation 0x30696cae +[NSURL URLWithString:]
14 Yummy 0x000146ca -[DeliciousPostCell setUrl:] + 46
Похоже, что URL был в каком-то "плохом" формате, но это действительно должно возвращать nil
не исключение.
Я никогда не видел, чтобы возникло исключение, поэтому я не могу использовать XCode, чтобы перехватить код и посмотреть, что происходит. И пользователь (пользователи), которые столкнулись с проблемой, никогда не связывались со мной напрямую, поэтому я не могу просить более подробную информацию. Любые предложения с благодарностью.
Обновление (14/7/2009) : Похоже на такой взлом, но я добавил блок исключения вокруг подозрительной строки. Я также поднял отчет об ошибке радара (# 7031551), предлагая, чтобы код соответствовал документации.