Я обнаружил, что можно ввести некоторые URL-адреса, которые кажутся в порядке, но отклонены методами создания NSURL. Таким образом, у нас есть метод для экранирования строки, чтобы убедиться, что она в хорошем формате. Вот мясо этого:
NSString *escapedURLString =
NSMakeCollectable(CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)URLString,
(CFStringRef)@"%+#", // Characters to leave unescaped
NULL,
kCFStringEncodingUTF8));