У меня в проекте есть следующий код
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;
}
Он создает дескриптор псевдонима, который передает файл программе, которая не поддерживает приложение, но реагирует на это событие AppleEvent.
Когда я компилирую это под 10.8, я получаю предупреждения, потому что все функции Carbon FSNewAlias*
устарели, и мы должны использовать объекты непрозрачных закладок NSData
из NSURL
API. Однако мне не удалось превратить эти данные в псевдонимы дескрипторов AppleEvent.
Как я могу сделать дескриптор typeAlias
в 10.8 без FSNewAlias*
?