iOS runtime ~ 动态添加属性

   联系人:石虎 QQ:1224614774  昵称: 嗡嘛呢叭咪哄

                        QQ群:807236138  群称: iOS 技术交流学习群

 

一、概念

 

  1.runtime:动态添加属性:什么时候需要动态添加属性;

  2.开发场景:给系统的类添加属性的时候,可以使用runtime动态添加属性方法;

  3.本质:动态添加属性,就是让某个属性与对象产生关联。runtime一般都是针对系统的类;

  4.在分类中利用runtime动态添加属性;

  5.效果图:

           

 

 

 

二、代码实现

 

1.控制器代码:

//  Created by  on 2017/12/29.

//  Copyright © 2017年 石虎. All rights reserved.

//


#import "SHAddAttributesViewController.h"
@interface SHAddAttributesViewController ()
@end


@implementation SHAddAttributesViewController

- (void)viewDidLoad {

    [super viewDidLoad];
    self.view.backgroundColor = [UIColor orangeColor];
    //给系统NSObject类动态添加属性name

    NSObject *objc = [[NSObject alloc] init];
    objc.name = @"石虎你是最棒的....";
    NSLog(@"objc.name = %@",objc.name);
}

@end

2.分类代码

//  Created by  on 2017/12/29.

//  Copyright © 2017年 石虎. All rights reserved.

//


#import "NSObject+Property.h"
#import <objc/message.h>

// 定义关联的key
static const char *key = "name";

@implementation NSObject (Property)

- (void)setName:(NSString *)name{

    // 让这个字符串与当前对象产生联系
    // _name = name;

    // object:给哪个对象添加属性

    // key:属性名称

    // value:属性值

    // policy:保存策略

    objc_setAssociatedObject(self, key, name, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    //objc_setAssociatedObject(self, @"name", name, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}


- (NSString *)name{

    // 根据关联的key,获取关联的值。
    return objc_getAssociatedObject(self, key);
    //return objc_getAssociatedObject(self, @"name");

}

@end

 

3.调试中效果图:

 

 

 

谢谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值