2013-03-25 75 views
4

對類對象使用objc_setAssociatedObject是否正確?使用objc_setAssociatedObject類對象是否正確?

我們經常使用類似的靜態變量來模擬類變量: Objective C Static Class Level variables 但是,我們可以使用Associated對象作爲替代嗎?

objc_setAssociatedObject([self class], &STRING_KEY, myString, OBJC_ASSOCIATION_RETAIN); 
+1

完全沒有問題 – 2013-03-25 06:52:12

+0

是的,但對於那些會維護你的代碼的人來說,這將更難理解。當您需要添加動態組件數據時,您應該使用objc_setAssociatedObject,但您不知道在編譯時要添加什麼樣的數據/名稱。如果你知道它在編譯時,你仍然可以使用舊的全局技術;) – 2013-03-25 08:37:43

回答

5

是的,一類對象是一個完全成熟的對象,所以你可以做任何事情它,你可以用一個普通的對象做。

但是,使用全局變量更清楚和更簡單。

p.s.將它與[self class]相關聯與使用全局變量不同,因爲[self class]爲您提供了當前對象的實際類,這可能隨着此方法由子類繼承而變化。而對於全局變量,它始終是相同的變量。

+0

在我的情況下,我有一個基類與許多子類,每個子類需要一個獨特的類伊娃(可以這麼說),所以這實際上是完美的解決方案! – 2014-04-11 14:08:39

相關問題