现在有一个需求,controller中有四个变量,需要方便的赋同样的值,如何实现呢?
{ NSArray *_arr1; NSArray *_arr2; NSArray *_arr3; NSArray *_arr4; }
我用到了Object-C的运行时去解决这个问题。
for (int i = 1; i < 5; i ++) { //获得变量,第一个参数是变量的所属类,第二个参数是变量名字符串,需转换成C的字符串 Ivar var = class_getInstanceVariable([self class], [[NSString stringWithFormat:@"_arr%d",i] UTF8String]); //给变量赋值,第一个参数是变量所属的类对象,第二个参数是需要赋值的变量,第三个参数是赋的值 object_setIvar(self, var, @[@"a",@"b"]); }
打印下
2015-04-26 14:56:19.362 Runtime[23492:599694] arr1 = ( a, b ) 2015-04-26 14:56:19.363 Runtime[23492:599694] arr2 = ( a, b ) 2015-04-26 14:56:19.363 Runtime[23492:599694] arr3 = ( a, b ) 2015-04-26 14:56:19.363 Runtime[23492:599694] arr4 = ( a, b )
赋值成功!
时间: 2024-10-16 13:27:38