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 <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.调试中效果图:

谢谢!!!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,879评论 0 9
  • 对于从事 iOS 开发人员来说,所有的人都会答出【runtime 是运行时】什么情况下用runtime?大部分人能...
    梦夜繁星阅读 9,111评论 7 64
  • PPT 笔记 const,static,extern简介 RunTime 一、runtime简介 RunTime简...
    CoderZXS阅读 2,767评论 0 0
  • 差不多过了一个星期,孩子的病情有了好转。这几天家里面的人都忙得团团转。特别是小美,天天围着孩子,晚上也睡得不...
    半秋伴夏阅读 1,162评论 0 0
  • 我最不相信这句话:XX很简单的,求其整。 曾经,我对此深信不疑。然而,现实生活中种种迹象都昭显着这句话的荒谬。说这...
    34号先生阅读 2,087评论 0 1

友情链接更多精彩内容