美文网首页
iOS的类别中只能用runtime添加属性。

iOS的类别中只能用runtime添加属性。

作者: isnow | 来源:发表于2016-08-22 14:24 被阅读0次

原因是,在类别中可以添加属性,却无法添加成员变量,该列别中无法用常规方法实现get和set方法。

此时是应该用runtime去写get和set。

使用objc_setAssociatedObject/objc_getAssociatedObject实现添加属性,其实就是get/set方法。

在类别的.h方法中添加属性property。

@interface UILabel (my)

@property(nonatomic,strong)NSObject*property;

@end

在.m文件中写get/set方法

@implementation UILabel (my)

- (NSObject*)property

{

     returnobjc_getAssociatedObject(self,@selector(property));

}

- (void)setProperty:(NSObject*)value

{

    objc_setAssociatedObject(self,@selector(property), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}

这样就给label添加了property属性。

相关文章

网友评论

      本文标题:iOS的类别中只能用runtime添加属性。

      本文链接:https://www.haomeiwen.com/subject/zmawsttx.html