2010-02-17 34 views
1

我可以標記一個不斷更改值以方便從方法訪問的UIColor嗎?我可以標記一個UIColor嗎?

+0

澄清請。在UIColor中沒有標籤屬性,就像在UIView中一樣。如果你想要一個容易被許多方法使用的顏色對象,只需將它放在UIColor *類型的成員變量中即可。 –

回答

2

從iPhone SDK 3.1開始,您可以使用objc_setAssociatedObject。你會這樣做:

objc_setAssociatedObject(myColor, infoObject, &keyObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

注1:該值必須是一個對象。您不能將整數設置爲值。

檢索值:

id aTag = objc_getAssociatedObject(myColor, &keyObject); 

注2:keyObject必須完全你設定值時所使用的同一對象。如果您發送具有相同值的另一個對象,它將不起作用。

如果以後要釋放的標記值:

objc_setAssociatedObject(myColor, nil, &keyObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

(。由於一個錯誤,這並不在iPhone模擬器工作的更多信息,請參見this question

你也可以閱讀this post,其中涉及使用這種方法來存儲密鑰。

注意:我並不是說這是處理問題的最佳方法。由於Objective-C的編程指南狀態,相關聯的對象主要用於情況下

你沒有訪問源 代碼爲類,或者如果 二進制兼容性的考慮,您 不能改變對象的佈局。

閱讀全部有關here

相關問題