可能重复:
子类 UIButton 添加属性
我正在尝试找到一种扩展 UIButton 的方法,以便它可以具有类似的属性
@property(assign, nonatomic) id userInfos;
没有子类化它......
这可能吗?
在button.tag
我的情况下还不够......
好的,这里有更好的答案
可能重复:
子类 UIButton 添加属性
我正在尝试找到一种扩展 UIButton 的方法,以便它可以具有类似的属性
@property(assign, nonatomic) id userInfos;
没有子类化它......
这可能吗?
在button.tag
我的情况下还不够......
好的,这里有更好的答案
这很容易使用 Objective-C 关联对象:
在您的标题中:
@interface UIButton (MyCustomProperty)
@property (readwrite, retain, nonatomic) id myCustomProperty;
@end
在您的实现文件中:
#include <objc/runtime.h>
/* Associated objects need a unique memory location to use as a key. */
static char MyCustomPropertyKey = 0;
@implementation UIButton (MyCustomProperty)
/* Use @dynamic to tell the compiler you're handling the accessors yourself. */
@dynamic myCustomProperty;
- (id)myCustomProperty {
return objc_getAssociatedObject(self, &MyCustomPropertyKey);
}
- (void)setMyCustomProperty: (id)anObject {
objc_setAssociatedObject(self, &MyCustomPropertyKey, anObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
就是这样!
您可以使用 Objective-C 运行时的关联对象函数将一个对象与另一个对象关联:
void objc_setAssociatedObject(id object, void *key, id value, objc_AssociationPolicy 策略)
id objc_getAssociatedObject(id object, void *key)
此外,投票结束。副本:
如何通过类别扩展向 NSMutableArray 添加属性?
在许多其他人中。
编辑:
我也同意@Paul.s 对您的问题的评论。将数据附加到按钮听起来很混乱。在不知道您在做什么的情况下,我建议您标记按钮,然后让您的视图控制器处理根据按钮的标签获取您需要的任何数据。
您想要的是创建一个 UIButton类别。类别被设计为扩展现有类的功能的一种方式。一旦创建了一个设置,您只需要导入该类别,您就可以在它设计的类的任何实例上使用它的功能。