はい。ご指摘のとおり、ColorSyncManagerリファレンスには次のように記載されています。
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.