【发布时间】:2013-04-28 21:55:59
【问题描述】:
第三方开源库VSTGUI 中的 Cocoa NSOpenPanel 会禁用已设置 exec 权限的文件。 exec 位不是必需的,但它似乎通常设置在在 Windows 上创建并下载到 OS X 的文件上。
库使用beginSheetForDirectory:file:types:modalForWindow:modalDelegate:didEndSelector:contextInfo: 来显示面板。给定的types 参数是一个带有基于简单扩展的UTI 的单例数组。什么可能导致面板禁止这些文件以及如何以及在何处配置行为?
我知道该方法已经或将被弃用,但现在我似乎被困在这个问题上。我在 OS X 10.8 上,Xcode 中的部署目标是 10.5。
编辑:
这里使用的UTI是用函数创建的
CFStringRef UTTypeCreatePreferredIdentifierForTag(CFStringRef inTagClass,
CFStringRef inTag,
CFStringRef inConformingToUTI)
kUTTagClassFilenameExtension 为 inTagClass,所需的扩展名为 inTag,kUTTypeData 为 inConformingToUTI。如果我将types 参数作为具有简单扩展字符串的数组而不是UTI,则一切都按预期工作。所以我猜kUTTypeData 提示类型排除了设置了 exec 位的文件。不幸的是,documentation 没有告诉inConformingToUTI 的任何其他值。
【问题讨论】:
标签: objective-c macos cocoa permissions nsopenpanel