2011-03-28 48 views
0

Flash Actionscript開發人員可以在運行時引用實例屬性。我在想,如果類似的事情在Objective-C如何在運行時引用實例屬性Objective-C

存在的ActionScript中,我們可以這樣做:

var thisObject; 
for (var i=0; i<10; i++) { 
    thisObject = this["myInstanceProperty"+i]; 
    thisObject.doSomething(); 
} 

我以爲會有Objective-C中一個類似的方法,但我無法找到任何東西隨時隨地提到我正在尋找的東西沿線︰

for (int i=0; i<10; i++) { 
    NSString *buttonName = [NSString stringWithFormat:@"button_%i", i]; 
    id *thisButton = [self instancePropertyWithStringName:buttonName]; 
    thisButton.label = @"button %i"; 
} 

你能看到我在得到什麼?我有一個xib鏈接到IBOutlets的視圖,我想在for循環中引用這些IBOutlets,所以我可以在運行時動態添加屬性。

任何想法?

回答

2

如果self對象符合NSKeyValueCoding,您可以使用以下內容 - 默認情況下,它的實例變量和屬性會使用該對象。

NSButton *button = [self valueForKey:buttonName]; 
+0

此外,如果buttonName不是一個屬性。另外,不需要轉換爲NSButton。另外,要設置值[self setValue:foo forKey:buttonName] – hooleyhoop 2011-03-28 12:11:52

+0

@ fakeAccount22您是對的,我編輯了我的帖子。我在離鍾前一分鐘就從學校發佈了這篇文章,所以我沒有時間查看詳細信息;-) – 2011-03-28 15:29:25

+0

這正是我需要的,謝謝! – aeldron 2011-03-28 15:30:55

相關問題