我需要使用按钮传递字符串数据,比如标签,我该怎么办?
[button setTag:tg];
tg是nsstring。也许使用其他财产而不是标签?
答案 0 :(得分:5)
使用Associated Objects
@interface UIButton (Tagged)
@property (nonatomic, copy) NSString *tag;
@end
#import <objc/runtime.h>
static const void *tagKey = &tagKey;
@implementation UIButton (Tagged)
- (void)setTag:(NSSting *)tag
{
objc_setAssociatedObject(self, tagKey, tag, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
- (NSString *)tag
{
return objc_getAssociatedObject(self, tagKey);
}
@end
答案 1 :(得分:0)
你不能将NSString
变量设置为整数属性,在Objective-C中是不可能的(如果它是一个对象,技术上你可以,但你在这里处理一个原语)。
您可以在Objective-C运行时中使用关联的属性。您可以使用此API将任何其他变量设置为任何对象,然后在以后检索它。有关详细信息,请参阅以下链接。
http://oleb.net/blog/2011/05/faking-ivars-in-objc-categories-with-associative-references/
方法objc_setAssociatedObject
是您正在寻找的方法。