I've got the following function:
- (void)loadPdfFromPath:(NSString*)path
{
NSURL *pathUrl = [NSURL URLWithString:path];
_pdfDocument = CGPDFDocumentCreateWithURL((CFURLRef)pathUrl);
}
Which from the documentation I'm lead to believe will work because you can case from an NSURL*
to a CFURLRef
via Toll-Free Bridging. However, this function fails, and I get the following output in the log:
CFURLCreateDataAndPropertiesFromResource: error code -15.
NB: -15 = kCFURLImproperArgumentsError
However, if I create an actual CFURLRef
, it works absolutely fine:
- (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)
}
What am I missing? I'm happy to keep the second function in my code, but I'd rather know why the first one is failing.