У меня есть следующая функция:CGPDFDocumentCreateWithURL выходит из строя (Toll-Free шунтирующего из NSURL в CFURLRef)
- (void)loadPdfFromPath:(NSString*)path
{
NSURL *pathUrl = [NSURL URLWithString:path];
_pdfDocument = CGPDFDocumentCreateWithURL((CFURLRef)pathUrl);
}
Какой из документации я привожу к считаем, будет работать, потому что вы можете случаю от NSURL*
к a CFURLRef
через Toll-Free Bridging. Однако эта функция не работает, и я получаю следующий результат в журнале:
CFURLCreateDataAndPropertiesFromResource: код ошибки -15.
NB: -15 = kCFURLImproperArgumentsError
Однако, если я создаю реальную CFURLRef
, она работает абсолютно нормально:
- (void)loadPdfFromPath:(NSString*)path
{
CGPDFDocumentRelease(_pdfDocument);
CFStringRef cgPath = CFStringCreateWithCString(NULL, [path UTF8String], kCFStringEncodingUTF8);
CFURLRef url = CFURLCreateWithFileSystemPath(NULL, cgPath, kCFURLPOSIXPathStyle, 0);
_pdfDocument = CGPDFDocumentCreateWithURL(url);
CFRelease(url);
CFRelease(cgPath)
}
Что мне не хватает? Я счастлив сохранить вторую функцию в своем коде, но я бы предпочел узнать, почему первый из них не работает.
+1. Это не всегда будет работать, если 'path' имеет символы, которые недействительны в URL-адресе, например пробелы. –
@KenThomases: Хорошо, спасибо за отзыв! –