iOS 程序里对象的唯一标识?

场景是这样的,我想对已实例化的所有控件进行修改,也就是已经存在系统内存中的控件进行修改,假如改背景颜色吧(我说的假如,真实场景中不是哈),现在的问题是我用什么属性或字段来唯一标识控件?

我首先想到了用控件的内存地址作为它在内存中的唯一标识:
NSString * address = [NSString stringWithFormat@"%p",view1];

我用一个单例将每个控件的内存地址存起来,我再遍历window下的所有subView,当它的内存地址在我的单例里,我就进行改颜色

乍一看可行,我也实践过了,确实可行,但是当APP里建的控件多了,就会出现颜色混乱的情况,也就是这个控件的颜色会变成另一个控件的颜色,说明两个控件的唯一标识相同了,这一点我就想不明白了,难道用内存地址不能作为唯一标识符,那用什么好呢?

https://blog.csdn.net/u011146511/article/details/51206456

iOS中每个控件都有一个tag的属性,比如一个UIButton *btn,可以设置该控件的tag值为任意大于0的整数,如btn.tag = 666,然后想要找到该控件就通过层级包含有此btn的父控件中通过tag值找这个控件即可.
如UIButton *btn = [self.view viewWithTag:666]即可再次找到这个Button。