我可以使用:
通过@property设置实例变量SEL s = NSSelectorFromString([NSString stringWithFormat:@"set%@:", property]);
[self performSelector: s withObject: newObject];
但有没有办法直接动态设置实例变量?
答案 0 :(得分:2)
它不如直接使用选择器那么高效,但您可以使用 - [setValue:forKey:]动态设置属性。因此,如果您有一个名为 foo 的属性,并且您想将其设置为 @“bar”,那么您可以这样做:
[self setValue:@"bar" forKey:@"foo"];
请记住,因为这只需要对象引用,所以你必须正确地包装任何基元。因此,如果您有一个名为 foobar 的属性,它采用 NSInteger 值,您可以这样做:
[self setValue:[NSNumber numberWithInteger:5] forKey:@"foobar"];
答案 1 :(得分:1)
[self setValue:newObject forKey:property];