Objective c 我可以标记颜色吗?

Objective c 我可以标记颜色吗?,objective-c,uicolor,Objective C,Uicolor,我是否可以标记一个不断更改值以便于从方法访问的UIColor?从iPhone SDK 3.1开始,您可以使用objc\u setAssociatedObject。你可以这样做: objc_setAssociatedObject(myColor, infoObject, &keyObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 注1:该值必须是一个对象。不能将整数设置为值 要检索该值,请执行以下操作: id aTag = objc_getAssoci

我是否可以标记一个不断更改值以便于从方法访问的UIColor?

从iPhone SDK 3.1开始,您可以使用
objc\u 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);
(由于一个bug,这在iPhone模拟器中不起作用。有关更多信息,请参阅。)

您还可以通过使用此方法存储键来读取哪些内容

注意:我并不是说这是处理问题的最佳方式。正如Objective-C编程指南所述,关联对象主要用于以下情况:

您没有访问源的权限 类的代码,如果为 二进制兼容性的原因 无法更改对象的布局


请详细阅读。

请澄清。UIColor中没有标记属性,就像UIView中一样。如果您想要一个可供许多方法使用的颜色对象,只需将其放置在UIColor*类型的成员变量中即可。