iOS runtime ~ 动态添加属性

移动开发 简书

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

一、概念

  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 
// 定义关联的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.调试中效果图:

谢谢!!!

简书稿源:简书 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 移动开发 » iOS runtime ~ 动态添加属性

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录