使用属性的名称动态访问Objective-C属性

我知道对象的属性的字符串名称。如何使用字符串获取和设置该属性?
虽然@weichsel是正确的,有一个更好的方法。

使用:

[anObject valueForKey: @"propertyName"];

[anObject setValue:value forKey:@"propertyName"];

显然,@“propertyName”可以是在运行时动态组合的NSString。

这种技术称为Key Value Coding,是Cocoa的基础。

为什么这更好是因为-valueForKey将做任何必要的“框”,无论属性返回到对象的类型。因此,如果属性是int类型,它将返回一个包含int的NSNumber实例。

这更容易处理 – performSelector只适用于适合指针内存的类型。

请注意,还有-setValue:forKey :.

转载注明原文:使用属性的名称动态访问Objective-C属性 - 代码日志