2009-12-28 140 views

回答

48

雖然@weichsel是正確的,有一個更好的辦法。

用途:

[anObject valueForKey: @"propertyName"]; 

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

顯然,@"propertyName"可以是NSString是在運行時動態組成。

這種技術被稱爲Key Value Coding,是可可的基礎。

爲什麼這樣更好是因爲-valueForKey將做什麼必須「框」任何類型的屬性返回到一個對象。因此,如果屬性類型爲int,它將返回包含int的NSNumber實例。

這是很容易對付 - performSelector發生適應一個指針的值的存儲器類型的工作。

請注意,也有-setValue:forKey:

+0

非常方便!不知道。 – 2009-12-28 15:33:18

2

@synthesize propertyName自動生成getter和setter方法。

編譯器生成

  • - (id)propertyName;
  • - (void)setPropertyName;

如果你有一個選擇爲的NSString,你可以使用performSelector:NSSelectorFromString
例如爲:
[object performSelector:NSSelectorFromString(@"propertyName") ...]

+1

您必須使用'performSelector:withObject:'來設置屬性。 – 2009-12-28 15:17:48