是的。正如您所指出的,ColorSync 管理器参考说明如下:
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
.
I've tested my changes in ImageApp on Mac OS X 10.5 it it works as expected.