如何动态设置实例变量?

时间:2011-02-28 22:52:15

标签: iphone objective-c pyobjc

我可以使用:

通过@property设置实例变量
SEL s = NSSelectorFromString([NSString stringWithFormat:@"set%@:", property]);
[self performSelector: s withObject: newObject];

但有没有办法直接动态设置实例变量?

2 个答案:

答案 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];