添加属性
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值: 张光北
网友评论