使用未弃用的 64 位代码替换 CMNewProfileSearch

2023-11-29

我有现有的代码使用CMNewProfileSearch查找然后迭代系统上的颜色配置文件,获取它们的名称和完整路径。很遗憾,CMNewProfileSearch在 Mac OS X 10.5 中已弃用,并且在编译 64 位应用程序时也不可用。

在阅读 ColorSync Manager 2.5 参考时,迭代已安装的颜色配置文件的新方法似乎是使用CMIterateColorSyncFolder功能。

  1. 真的吗?
  2. 有没有一种可可的方式来做我想做的事?
  3. 有人有示例代码吗?

Thanks.


  1. 是的。正如您所指出的,ColorSync 管理器参考说如下:

    CMNewProfileSearch 功能未充分利用优化的配置文件 从 ColorSync 2.5 版开始可进行搜索。使用CMIterateColorSyncFolder 反而。

  2. CMIterateColorSyncFolder is the official方法来做到这一点。除此之外,这也是优化 way.

  3. From 苹果的ImageApp示例代码:

编辑:我已经修改了代码示例以删除NewCMProfileIterateUPP and 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 and DisposeCMProfileIterateUPP所以据我所知,它们还没有被任何东西取代。相反,您可以使用匹配的签名来定义回调函数profileIterate, 多于。然后你可以直接将回调函数传递给CMIterateColorSyncFolder.

我已经测试了我的更改ImageApp在 Mac OS X 10.5 上它按预期工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用未弃用的 64 位代码替换 CMNewProfileSearch 的相关文章

随机推荐