因为别人创建的一个类,暂且成为原类(class A).
但是别人在原类(class A).m文件中设置了成员变量(就是@property (xxx) Value *value出来一个成员变量)
然后因为某种需求,你需要对这个原类(class A)创建一个category分类(class A(B))
并对原类(class A)中的.m文件成员变量value赋值.
有点绕...抱歉,形容不好...我已经尽力了.在附上一张图.还不懂,下方留言
这就是我碰到的问题,大概就是这么理解吧
接下来是解决问题方法
u_int count = 0;
Ivar *ivars = class_copyIvarList([self class], &count);
for (unsigned int i = 0; i < count; i++) {
Ivar iva = ivars[i];
NSString *str = [NSString stringWithCString:ivar_getTypeEncoding(iva) encoding:NSUTF8StringEncoding];
NSLog(@"iva -> %s", ivar_getName(iva));
NSLog(@"str -> %@", str);
if ([str isEqualToString:@"@?"]) {//这里对应 你那个成员变量的字符,在上面log已经打印出来
object_setIvar(self, iva, click);
/*
� 我在这里翻过车.....objct_setIvar这个方法的第一个参数我填成click了.
所以一直赋值不上....然后查了一下这个方法...发现第一个是类名(这里我不确定,个人理解)
,第二个是iva,第三个是参数,我这个参数是block,如果你们是字符串,传字符串即可
*/
}
}
free(ivars);