【发布时间】:2014-07-02 08:30:07
【问题描述】:
我的快速查看生成器以前可以正常工作,但现在坏了。
这是一个错误还是我做错了什么?
这是我的代码:
OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef 预览, CFURLRef 网址,CFStringRef contentTypeUTI, CFDictionaryRef 选项){ NSDictionary * myDoc = [NSDictionary dictionaryWithContentsOfURL:(NSURL *)url]; 如果(我的文档){ NSData * pngData = [myDoc valueForKey:@"pngPreview"]; 如果(png数据){ QLPreviewRequestSetDataRepresentation(preview,(__bridge CFDataRef)pngData, kUTTypeImage,NULL); } } }我的文档是一个普通的 plist,其中存储了一个 png 预览作为数据。
我检查了 pngPreview 确实包含 png 数据,我创建了图像,它的大小是 350×350。
但是,我经常收到这些错误:
qlmanage[702]:CGImageCreate:无效图像尺寸:0 x 0。
qlmanage[702:303] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x9e27, name = 'com.apple.tsm.portname' 有关错误代码,请参见 /usr/include/servers/bootstrap_defs.h。
qlmanage[702:303] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x3f2b, name = 'com.apple.CFPasteboardClient' 有关错误代码,请参见 /usr/include/servers/bootstrap_defs.h。
qlmanage[702:303] 无法为 com.apple.CFPasteboardClient 分配通信端口;这可能是由于沙盒限制
我的应用没有沙盒化,所以我认为最后 3 个错误并不重要。
我曾经使用 kUTTypePNG,但尝试使用 kUTTypeImage 无济于事(QLPreviewRequestSetDataRepresentation 的文档说当前支持的 UTI 是 kUTTypeImage、kUTTypePDF、kUTTypeHTML、kUTTypeXML、kUTTypePlainText、kUTTypeRTF、kUTTypeMovie 和 kUTTypeAudio)。
其他需要考虑的点:
文档状态:
“Quick Look 生成器的二进制文件必须是通用的,并且只能是 32 位的。” This page
但是this page 声明:
“对于 OS X v10.6 及更高版本,您必须为 32 位和 64 位构建 Quick Look 生成器。”哪个不太清楚...
如何设定目标?
【问题讨论】:
-
如果它曾经可以工作,那么这是一个错误。二进制兼容性很重要。您是否在 bugreport.apple.com 提交了错误?
-
谢谢,我会这样做并告诉他们也更新文档:所有内容都是为旧 Xcode 提供的,尤其是如何调试文档具有误导性。
-
@wdyp 如果可以,请在OpenRadar 上发帖,以便其他人可以跟踪该错误!
-
有这方面的消息吗?我面临同样的问题。谢谢
-
我正在等待优胜美地可能纠正这个错误......