我正在尝试从数据库创建树以创建自定义表。我正在做的是从数据库中获取数据并创建树结构。为了创建子节点,我将使用info对象将值存储在Cftree中。它对我来说很好。任何人都可以让我知道这种方法是否会出现性能问题。因为我将NSString存储在树的每个节点的信息对象中。如果其性能出现问题,什么是最好的方法。
我正在使用下面的代码块来创建Tree。

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);
}

最佳答案

NSString用作CFTree的数据没有问题。与其他任何数据一样。 NSString是免费电话桥接到CFString,因此对回调使用CFRetainCFReleaseCFCopyDescription是合适的。

如果使用的是ARC,则需要使用(__bridge CFStringRef)强制转换来获取指针。

请注意,树和回调不会复制字符串。因此,如果将对NSMutableString的引用放入树中,然后对其进行突变,那将更改树的数据。那可能是您想要的,也可能不是。在将其添加到树之前考虑制作副本。

如果遇到性能问题,则需要解释这些性能问题的性质以及为什么怀疑在NSString中使用CFTree的原因。如果您只是怀疑性能问题,那就不要。直到衡量一个性能问题之前,您都是在浪费时间。

10-08 06:00
查看更多