2015-08-08 18 views
1

我試圖從數據庫創建一個樹來創建自定義表。我正在做的是從數據庫中獲取數據並創建樹結構。要創建子節點,我使用info對象在Cftree中存儲值。它爲我工作很好。任何人都可以請讓我知道這種方法會有什麼性能問題。因爲我將NSString存儲在樹的每個節點的信息對象中。如果它有性能問題,那麼做這件事的最好方法是什麼。 我使用下面的代碼塊來創建樹。是否使用CFTreeContext信息對象在CFTreeRef中存儲NSString數據是一個好習慣

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

回答

2

有使用NSString S作爲CFTree的數據沒有問題。它的處理方式與其他數據非常相似。 NSString免費橋接到CFString,因此使用CFRetainCFReleaseCFCopyDescription作爲回調是適當的。

如果您使用ARC,則需要使用(__bridge CFStringRef)轉換來獲取指針。

請注意,樹和回調函數不會生成字符串的副本。因此,如果您將一個NSMutableString的引用放入樹中並隨後進行變異,那麼這將改變樹的數據。這可能是也可能不是你想要的。考慮在將其添加到樹之前進行復制。

如果您遇到性能問題,您需要解釋這些性能問題的性質以及爲什麼您懷疑在CFTree中使用NSString作爲原因。如果你只是嫌疑人性能問題,那麼不要。直到你有衡量性能問題,你浪費你的時間。

相關問題