我在项目中有以下代码
NSAppleEventDescriptor *JHCreateAliasDescriptorForURL(NSURL *aURL) {
NSAppleEventDescriptor *retObj = nil;
FSRef fsReference;
if (CFURLGetFSRef((__bridge CFURLRef)aURL, &fsReference)) {
AliasHandle aliasHandle = NULL;
OSStatus err = FSNewAliasMinimal(&fsReference, &aliasHandle);
if (err == noErr && aliasHandle != NULL) {
HLock((Handle)aliasHandle);
retObj = [NSAppleEventDescriptor descriptorWithDescriptorType:typeAlias
data:[NSData dataWithBytes:*aliasHandle
length:GetHandleSize((Handle)aliasHandle)]];
HUnlock((Handle)aliasHandle);
DisposeHandle((Handle)aliasHandle);
}
}
return retObj;
}
它创建一个别名描述符,该描述符将文件传递给一个不是applescriptable 但响应这个AppleEvent 的程序。
当我在 10.8 下编译它时,我收到警告,因为所有 CarbonFSNewAlias*
函数都已弃用,我们应该使用APINSData
之外的不透明书签对象。NSURL
但是,我没有运气将此数据转换为别名 AppleEvent 描述符。
如何typeAlias
在没有 10.8 的情况下制作描述符FSNewAlias*
?