在Objective-C中,我需要將可變集合整數(單調,非連續,可能相當大)關聯到布爾值。顯而易見的方法是將NSNictionary作爲鍵和值。在Objective-C中將整數映射到布爾值
有沒有更好的方法,不涉及這麼多的對象創建?如果有我不熟悉的技術,我真的不會嘗試像學習那樣預先優化。
該數據對於特定的類實現是私有的,因此不需要與其餘的Cocoa API集成。
在Objective-C中,我需要將可變集合整數(單調,非連續,可能相當大)關聯到布爾值。顯而易見的方法是將NSNictionary作爲鍵和值。在Objective-C中將整數映射到布爾值
有沒有更好的方法,不涉及這麼多的對象創建?如果有我不熟悉的技術,我真的不會嘗試像學習那樣預先優化。
該數據對於特定的類實現是私有的,因此不需要與其餘的Cocoa API集成。
把一個標量映射到另一個標量的一般情況不是Cocoa處理得那麼好,因爲它關注於對象,標量需要在它提供任何東西之前打包。但是在布爾的情況下,只有兩種可能的映射狀態,因此開闢了一個非常方便的方法:NSIndexSet。存在於set =布爾狀態。
假設你滿意你的整數是指針大小,你可以使用NSMapTable(也帶有一個C API)或CFDictionary(這是免費橋接到NSDictionary)。或者,當然,您可以使用(非CF/Cocoa)C或C++數據結構,但它不會像Cocoa那樣整潔地完成整合。
......實際上,這個問題並不清楚:布爾變量的可變整數集合有三個狀態,即真,假和不存在。 – 2009-10-18 02:59:04
噢,好吧,你仍然可以保持相當輕量級的一個索引集合的真值和一個錯誤的值。只需在將索引添加到另一個集合時將它們包裝在一個調用'removeIndex:'的接口中。 – Chuck 2009-10-18 03:07:12
好點。另一個不是簡單回答問題的原因。 – 2009-10-18 14:53:26