我正在尝试从数据库创建树以创建自定义表。我正在做的是从数据库中获取数据并创建树结构。为了创建子节点,我将使用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
,因此对回调使用CFRetain
,CFRelease
和CFCopyDescription
是合适的。
如果使用的是ARC,则需要使用(__bridge CFStringRef)
强制转换来获取指针。
请注意,树和回调不会复制字符串。因此,如果将对NSMutableString
的引用放入树中,然后对其进行突变,那将更改树的数据。那可能是您想要的,也可能不是。在将其添加到树之前考虑制作副本。
如果遇到性能问题,则需要解释这些性能问题的性质以及为什么怀疑在NSString
中使用CFTree
的原因。如果您只是怀疑性能问题,那就不要。直到衡量一个性能问题之前,您都是在浪费时间。