美文网首页
分类添加属性

分类添加属性

作者: 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