2010-01-20 27 views

回答

4

它只會如果您正在創建一個非常病態命名集選擇的,只是這樣發生在所有堆疊在一個水桶在Objective-C的方法緩存中選擇的哈希您的應用程序變慢。

不太可能。如果您發現性能問題,請使用儀器(或其他工具)進行測量,然後在嘗試優化之前確定其位置。

雖然rpetrich的答案是正確的RAM每個選擇的量是最小的。就選擇器本身而言,它只是一個地址的數據價值。通常不使用實際的選擇器值。如果選擇器是由靜態分配的字符串組成的,那麼任何事情都不可能實際觸及內存(除非您的代碼確實如此)。

如果你是動態生成的選擇器名稱,那麼分配將很明顯,佔用內存。

(我當然很徹底好奇,爲什麼你產生如此多的選擇很非典型模式!)

+0

我必須管理大量集ID,有兩個具體的問題:一,集需要的ID和我的程序代碼中存在的選擇器集合重疊。其次,這些ID需要映射到整數。所以我想我應該讓運行時做的工作... – Jochen

+0

另一種方法是簡單地定義返回的ID的單一選擇,然後在需要的地方實施所述選擇。如果選擇器是ID,那麼創建選擇器的行爲似乎足以創建ID?從我的無知點來看,它似乎仍然很古怪。 :) – bbum

1

沒有,但每個選擇必須是駐留在內存中,並且不能被註銷。這將減少可用於其他應用程序的RAM量。