iOS category中为原类.m中的成员变量赋值

2017-07-13  本文已影响16人  俺妈说昵称越长媳妇越漂亮
有点绕...抱歉,形容不好...我已经尽力了.在附上一张图.还不懂,下方留言
8FB3605D-B3A3-494F-8517-9B4200E3CB9E.png
这就是我碰到的问题,大概就是这么理解吧

接下来是解决问题方法

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);

在附一张完整的代码图

WX20170713-165125@2x.png
上一篇 下一篇

猜你喜欢

热点阅读