我试图从DB创建一个树来创建自定义表。我正在做的是从数据库中获取数据并创建树结构。要创建子节点,我要使用info对象在Cftree中存储值。它对我来说很好。任何人都可以让我知道这种方法会有任何性能问题。因为我将NSString存储在树的每个节点的info对象中。如果它有性能问题,那么这是最好的方法。 我使用下面的代码块来创建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);
}
答案 0 :(得分:2)
使用NSString
s作为CFTree
的数据没有问题。它的处理方式与其他数据大致相同。 NSString
免费桥接到CFString
,因此使用CFRetain
,CFRelease
和CFCopyDescription
进行回调是合适的。
如果您正在使用ARC,则需要使用(__bridge CFStringRef)
强制转换来获取指针。
请注意,树和回调不会复制字符串。因此,如果您将对NSMutableString
的引用放入树中并随后对其进行变异,那么将更改树的数据。这可能是也可能不是你想要的。考虑在将副本添加到树之前制作副本。
如果您遇到性能问题,则需要解释这些性能问题的性质以及您怀疑在NSString
中使用CFTree
作为原因的原因。如果您只是怀疑性能问题,那就不要了。在您衡量性能问题之前,您需要浪费时间。