gpt4 book ai didi

iphone - 使用 cftree 创建一个树类

转载 作者:可可西里 更新时间:2023-11-01 05:47:53 25 4
gpt4 key购买 nike

我想用 CFTree 创建一个像 NSArray 这样的树类。(实际上 NSTree 不存在,所以我正在尝试制作“像树一样的 NSTree”。)

但 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 的实例,那么只需将上下文的 retainrelease 设置为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com