我可以在objective-c中的现有类中添加一个ivar(或属性)吗?

lms*_*lms 1 iphone objective-c

我想知道是否可以在UIButton类中添加一个ivar?有点像类别,但不是方法,而是ivars.

我是以编程方式创建和显示UIButton的数组,然后我将所有链接到一个–addTarget:action:forControlEvents:用于touchup事件的动作方法.

现在,我的接收器方法需要知道按下了哪个按钮,但使用"(id)发送器"方法并没有削减它,因为唯一区别所有按钮的是它显示的图像,没有办法获得到那(我需要一个字符串).按钮都在不同的地方所以我可以做一些数学运算将位置数据转换为"id",但如果我改变按钮的位置,我也需要改变数学,我不会像那样.

我可以将UIButton子类化并除了添加(NSUInteger)idCode属性外什么也不做更改?然后,当我创建按钮时,我设置了idCode,当目标动作机制触发动作方法时,我就可以了sender.idCode.这是这样做的吗?

有没有更好的标准/优雅方式来实现这种多目标行动,看看它来自哪里?

PS:有没有快速的方法在Mac上键入反引号?

Sve*_*ven 7

你可以这样做.但这不是必需的 - 每个UIView(和包含的子类UIButton)都具有tag您想要的属性.