operating system - How to Convert NSURL to CFURLRef -


apple gives sample code creating pdf document. uses cfurlref

nspanel savepanel gives nsurl.

i can't convert nsurl cfurlref

 path = cfstringcreatewithcstring (null, filename, kcfstringencodingutf8);   url = cfurlcreatewithfilesystempath (null, path, kcfurlposixpathstyle, 0);  nslog(@"cfurlref %@",url); 

output is

2016-04-22 00:34:26.648 xxx analysis[12242:813106] cfurlref analysisreport.pdf -- file:///users/xxxxxx/library/containers/com.xxxxxx.xxxnalysis/data/

convert code find

url = (__bridge cfurlref)thefile; nslog(@"nsurl %@",url); 

output

2016-04-22 00:37:20.494 xxx analysis[12325:816505] nsurl file:///users/xxxxxx/documents/xxxnalysis.pdf

at end pdf file saved program crash when nspanel closed.

cfurlref , nsurl toll-free bridged. typically, this:

nsurl *url = ...; cfurlref cfurl = cfbridgingretain(url); 

and when no longer need cfurl object:

cfrelease(cfurl); 

or if you're reasonably nsurl stick around long enough, can do

cfurlref cfurl = (__bridge cfurlref)url; 

if you're getting crash, means you're over-releasing — specifically, you're releasing object don't own. suggest reading apple's docs on object ownership:

https://developer.apple.com/library/mac/documentation/corefoundation/conceptual/cfmemorymgmt/concepts/ownership.html


Comments

Popular posts from this blog

html - Styling progress bar with inline style -

java - Oracle Sql developer error: could not install some modules -

How to use autoclose brackets in Jupyter notebook? -