iphone-使用cftree创建树类
我想用CFTree创建一个像NSArray这样的树类。 (实际上,NSTree不存在,所以我正在尝试创建“类似NSTree的树”。) 但CFTree似乎请求某些类型的类。 我想制作一个通用类,可以处理各种类,比如NSArray 以下是iphonedev站点的示例iphone-使用cftree创建树类,iphone,objective-c,ios,core-foundation,Iphone,Objective C,Ios,Core Foundation,我想用CFTree创建一个像NSArray这样的树类。 (实际上,NSTree不存在,所以我正在尝试创建“类似NSTree的树”。) 但CFTree似乎请求某些类型的类。 我想制作一个通用类,可以处理各种类,比如NSArray 以下是iphonedev站点的示例 static CFTreeRef CreateMyTree(CFAllocatorRef allocator) { MyTreeInfo *info; CFTreeContext ctx; info =
static CFTreeRef CreateMyTree(CFAllocatorRef allocator) {
MyTreeInfo *info;
CFTreeContext ctx;
info = CFAllocatorAllocate(allocator, sizeof(MyTreeInfo), 0);
info->address = 0;
info->symbol = NULL;
info->countCurrent = 0;
info->countTotal = 0;
ctx.version = 0;
ctx.info = info;
ctx.retain = AllocTreeInfo;
ctx.release = FreeTreeInfo;
ctx.copyDescription = NULL;
return CFTreeCreate(allocator, &ctx);
}
我想使用通用类而不是“MyTreeInfo”。
有办法吗
谢谢。当然,
CFTree
可以保存您想要的任何数据。如果要存储CFType
的实例,只需将上下文的retain
和release
设置为CFRetain
和CFRelease
。然后还可以将copyDescription
设置为CFCopyDescription
。大概是这样的:
static CFTreeRef CreateMyTree(CFTypeRef rootObject) {
CFTreeContext ctx;
ctx.version = 0;
ctx.info = rootObject;
ctx.retain = CFRetain;
ctx.release = CFRelease;
ctx.copyDescription = CFCopyDescription;
return CFTreeCreate(NULL, &ctx);
}
...
CFStringRef string = CFSTR("foo");
CFTreeRef tree = CreateMyTree(string);
NSLog(@"%@", tree);
CFRelease(tree);