iOS runtime动态变量控制

1.动态变量控制

1> 、 首先创建一个Person类

.h文件
.m文件

2>、创建VC实现动态变量控制

#import "oneViewController.h"#import "Person.h"#import@interface oneViewController ()

@property (weak, nonatomic) IBOutlet UITextField *textfield;

@property (nonatomic, strong) Person *person;

@end

@implementation oneViewController

- (void)viewDidLoad {

[super viewDidLoad];

self.person = [Person new];

_person.name = @"xiaoming";

NSLog(@"XiaoMing first answer is %@",self.person.name);

}

- (void)sayName

{

unsigned int count = 0;

Ivar *ivar = class_copyIvarList([self.person class], &count);//count获取Person的属性个数,为2;

for (int i = 0; i<count; i++){

Ivar var = ivar[i];

const char *varName = ivar_getName(var);//获取属性名称

NSString *proname = [NSString stringWithUTF8String:varName];//C字符串转换

if ([proname isEqualToString:@"_name"]) {  //这里别忘了给属性加下划线,通过属性名称

object_setIvar(self.person, var, @"daming");//object_setIvar(类名, 属性名称, 变更后的名称)

break;

}

}

NSLog(@"XiaoMing change name  is %@",self.person.name);//已成功通过runtime更改属性的值

self.textfield.text = self.person.name;

}

3>、效果如下:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于从事 iOS 开发人员来说,所有的人都会答出【runtime 是运行时】什么情况下用runtime?大部分人能...
    梦夜繁星阅读 3,744评论 7 64
  • runtime再实际开发中主要应用 1.动态添加一个类 2.通过runtime获取一个类的所有属性,我们可以做些什...
    十里杏坡阅读 800评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,123评论 19 139
  • map----映射--适合转换reduce---汇总--一个filter---过滤--适合筛选forEach---...
    noyanse阅读 242评论 0 1
  • 寻你,立在悬崖峭壁之上 不能上,不能下,只能前 坠落,无尽的深渊,惶恐 瞬间,深渊变成辽阔草原 身边,一群恶狼在咆...
    平生随烟雨阅读 158评论 0 0