2010-01-30 26 views
2

我目前有一個循環遍歷NSString對象的NSArray。我想要在循環的每次迭代中創建一個NSString變量,使用當前評估的NSString對象的字符串值(來自NSArray)作爲變量的名稱。這可能是通過示例最好的解釋:在運行期間在Objective-C中創建變量

for (i = 0; i < [arrayOfStrings count]; i++) { 

    // NSString *<name of variable is [arrayOfStrings objectAtIndex:i]> = [[NSString alloc] init]; 

} 

有沒有辦法完成此任務?我正在使用iPhone SDK 3.1。謝謝。

+1

沒有。但你爲什麼要這樣做? – echo 2010-01-30 03:48:24

+0

感謝大家的迴應。這個場景的用例是未知的(谷歌)用戶提出的,我需要根據需要創建一個類。不過,我想了一會兒,這是一個相當糟糕的設計,並重新調整應用程序以不再需要該功能。無論如何感謝您的所有建議! – Skoota 2010-01-31 05:55:29

回答

0

如果不存在變量,直到運行時那麼什麼會利用它們?

+0

我認爲這有幾個有用的情況。我想到的一個直接案例是需要根據需要創建一些類並根據所需的字段和方法實例化的情況。 但是,可能這裏要求的人有不同的用例 – user200654 2010-01-30 20:13:56

1

您可能需要看一看的Objective-C運行庫支持。有許多函數允許您在運行時添加變量,方法或更改方法實現。例如,在您的情況下,class_addIvar函數可能適用於您:

向類中添加一個新的實例變量。

BOOL class_addIvar(Class cls, const char *name, size_t size, uint8_t alignment, const char *types) 
1

您要求的內容沒有意義。運行時不存在變量名稱。它們被編譯爲偏移量,並且變量的名稱會丟失(如果我們正在討論方法局部變量,運行時將保留實例變量的名稱)。

我認爲真正的問題是「你爲什麼要這麼做?你到底想實現什麼?」