我正在尝试扩展 UIView 类以包含一个 setUserData 方法,该方法将保存对象值或任何值。这是声明:
userData 在 .h 文件中被定义为一个 id 属性。
@implementation UIView (Extensions)
@synthesize userData;
-(void) setUserData:(id)value
{
self.userData = value;
}
@end
当然,xCode 会提示我不能在类别中使用@synthesize。我怎样才能完成这个任务,或者 UIView 中已经有一些可以保存对象的属性。就像标签属性一样,但标签属性只包含整数。
最佳答案
正如您所说,您不能综合类别中的属性。为此,您必须使用称为关联对象的 Obj-C 运行时功能。
#import <objc/runtime.h>
const char * const viewKey = "jweinberg.view.storage";
@implementation UIView (Storage)
- (id)myProperty;
{
return objc_getAssociatedObject(self, viewKey);
}
- (void)setMyProperty:(id)property;
{
objc_setAssociatedObject(self, viewKey, property, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
关于objective-c - UIView 类别和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8493323/