gpt4 book ai didi

objective-c - UIView 类别和属性

转载 作者:搜寻专家 更新时间:2023-10-30 20:03:44 25 4
gpt4 key购买 nike

我正在尝试扩展 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com