cod*_*ero 5 pdf-generation operating-system nsurl nssavepanel nspanel
Apple提供了创建PDF文档的示例代码.但它使用CFURLRef
NSPanel savepanel提供NSURL.
我无法将NSURL转换为CFURLRef
path = CFStringCreateWithCString (NULL, filename, kCFStringEncodingUTF8);
url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0);
NSLog(@"CFURLRef %@",url);
Run Code Online (Sandbox Code Playgroud)
输出是
2016-04-22 00:34:26.648 XXX分析[12242:813106] CFURLRef AnalysisReport.pdf - file:///Users/xxxxxx/Library/Containers/com.xxxxxx.xxxnalysis/Data/
转换我找到的代码
url = (__bridge CFURLRef)theFile;
NSLog(@"NSURL %@",url);
Run Code Online (Sandbox Code Playgroud)
输出是
2016-04-22 00:37:20.494 XXX分析[12325:816505] NSURL文件:///Users/xxxxxx/Documents/xxxnalysis.pdf
最后保存PDF文件但NSPanel关闭时程序崩溃.
dga*_*ood 11
CFURLRef并且NSURL是免费的桥接.通常,你会这样做:
NSURL *url = ...;
CFURLRef cfurl = CFBridgingRetain(url);
Run Code Online (Sandbox Code Playgroud)
当您不再需要CFURL对象时:
CFRelease(cfurl);
Run Code Online (Sandbox Code Playgroud)
或者,如果你有理由确定NSURL会坚持到足够长的时间,你就可以做到
CFURLRef cfurl = (__bridge CFURLRef)url;
Run Code Online (Sandbox Code Playgroud)
如果你遇到了崩溃,这可能意味着你过度释放了某些东西 - 具体来说,你发布了一个你不拥有的对象.我建议阅读Apple关于对象所有权的文档:
| 归档时间: |
|
| 查看次数: |
5233 次 |
| 最近记录: |