美文网首页
分类添加属性

分类添加属性

作者: Harely | 来源:发表于2019-11-16 19:56 被阅读0次

添加属性

Demo Code
NSString分类.h文件

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NSString (Tool)


/// 分类添加属性(使用运行时)
@property(nonatomic, copy)NSString *name;

@end

.m文件

#import "NSString+Tool.h"
#import <objc/runtime.h>

static const void *nameKey = &nameKey;

@implementation NSString (Tool)


- (void)setName:(NSString *)name {
    
    
   /**
    *  根据某个对象,还有key,还有对应的策略(copy,strong等) 动态的将值设置到这个对象的key上
    *
    *  @param object 某个对象
    *  @param key    属性名,根据key去获取关联的对象, 是一个字符串常量,是一个地址(这里注意,地址必须是不变的,地址不同但是内容相同的也不算同一个key)
    *  @param value  要设置的值
    *  @param policy 策略(copy,strong,assign等)
    */
    objc_setAssociatedObject(self, &nameKey, name, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

- (NSString *)name {
    return objc_getAssociatedObject(self, nameKey);
}

@end



//调用
 NSString *test = @"大头爸爸";
 test.name = @"张光北";
 NSLog(@"字符串分类属性name值: %@", test.name);

打印:
2019-11-16 19:36:41.693406+0800 HGSWB[19518:789236] 字符串分类属性name值: 张光北

相关文章

网友评论

      本文标题:分类添加属性

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