//修改ios13 不允许valueForKey、setValue: forKey获取和设置私有属性
//[self setValue:[UIColor orangeColor] forKey:@"view.backgroundColor"];
//通过使用ivar获取指定名称的成员变量
//注意成员变量必须“_名称”
Ivar ivar = class_getInstanceVariable([self class], "_view");
// 获取某个对象成员变量的值
UIView *v = object_getIvar(self, ivar);
v.backgroundColor = [UIColor redColor];
NSString * name_type = @(ivar_getTypeEncoding(ivar));
NSString *name_str = @(ivar_getName(ivar));
NSLog(@"name_type:%@",name_type);
NSLog(@"name_str:%@",name_str);
if ([name_type isEqualToString:@"@\"UIView\""]) {
}
Ivar ivar = class_getInstanceVariable([UITextField class], "_placeholderLabel");
UILabel *placeholderLabel = object_getIvar(searchTextField, ivar);
placeholderLabel.textColor = TK999999;
unsigned int count = 0;
Ivar *members = class_copyIvarList([Person class], &count);
for (int i = 0; i < count; i++)
{
Ivar var = members[i];
const char *memberAddress = ivar_getName(var);
const char *memberType = ivar_getTypeEncoding(var);
NSLog(@"address = %s ; type = %s",memberAddress,memberType);
}
//对私有变量的更改
Ivar m_address = members[1];
object_setIvar(onePerson, m_address, @"朝阳公园");
NSLog(@"second time : %@",[onePerson description]);
ios13 不允许valueForKey、setValue: forKey获取和设置私有属性
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法。利用runtime机制让我们可...