Да. Как вы указали, Справочник ColorSync Manager говорит следующее:
Функция CMNewProfileSearch не в полной мере использует оптимизированный профиль
поиск возможен начиная с ColorSync версии 2.5. Используйте CMIterateColorSyncFolder
вместо этого.
CMIterateColorSyncFolder
является официальным способом . Кроме того, это также оптимизированный способ.
С Пример кода Apple ImageApp :
РЕДАКТИРОВАТЬ: я изменил пример кода, чтобы удалить NewCMProfileIterateUPP
и DisposeCMProfileIterateUPP
.
// Callback routine with a description of a profile that is
// called during an iteration through the available profiles.
//
static OSErr profileIterate (CMProfileIterateData *info, void *refCon)
{
NSMutableArray* array = (NSMutableArray*) refCon;
Profile* prof = [Profile profileWithIterateData:info];
if (prof)
[array addObject:prof];
return noErr;
}
// return an array of all profiles
//
+ (NSArray*) arrayOfAllProfiles
{
NSMutableArray* profs=[[NSMutableArray arrayWithCapacity:0] retain];
CMIterateColorSyncFolder(profileIterate, NULL, 0L, profs);
return (NSArray*)profs;
}
Получается, что не нужны NewCMProfileIterateUPP
и DisposeCMProfileIterateUPP
, поэтому они не были заменены чем-либо, насколько я могу судить. Вместо этого вы можете определить функцию обратного вызова с сигнатурой, которая соответствует profileIterate
выше. Затем вы можете просто передать функцию обратного вызова непосредственно в CMIterateColorSyncFolder
.
Я проверил свои изменения в ImageApp на Mac OS X 10.5 - все работает, как и ожидалось.