我想用CFTree制作一个像NSArray这样的树类。
(实际上 NSTree 不存在,所以我正在尝试制作“NSTree like tree”。)
但 CFTree 似乎要求某些类型类。
我想制作一个通用类,可以处理像 NSArray 这样的各种类。
这是 iPhone 开发站点的示例。
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);
关于iphone - 用 cftree 创建一个树类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6856728/