我在這裏有一些情況...
我正在向函數傳遞一個字符串,並且在該函數中我需要創建一個數組,其名稱是字符串。
例如:-(void) function : (NSString *) arrayName; //let arrayName = @"foo";
在這個函數中,我需要創建一個名爲「foo」的數組,即傳遞參數的值。
任何人都可以幫忙請:|
在此先感謝;)在objective-c中動態創建變量名稱
回答
這在Objective-C中是不可能的,但您可以使用例如將字符串映射到數組的字典。
E.g.假設像以下屬性:
@property (readonly, retain) NSMutableDictionary *arrays;
...你可以按名稱存儲陣列:
- (void)function:(NSString *)arrayName {
NSArray *array = [NSArray arrayWithObjects:@"foo", @"bar", nil];
[self.arrays setObject:array forKey:arrayName];
}
...和訪問它像這樣:
NSArray *array = [self.arrays objectForKey:arrayName];
陣列唐沒有名字。變量具有名稱,但變量侷限於其範圍,因此一旦離開該方法的範圍,使變量名稱爲「foo」是毫無意義的;你可以將變量命名爲任何你想要的,它會工作得很好。例如:
- (void) function:(id)whatever {
NSArray * myVariable = [NSArray arrayWithStuff....];
//use myVariable
}
你究竟想要做什麼?
嘿感謝您的意見... :)其實這個功能本質上是遞歸的;所以每次我遍歷它,我想能夠創建一個新的數組,而不會丟失前一個... – Bangdel 2010-09-15 06:16:15
@Bangdel如果方法是遞歸的,那麼對象仍然存在於它創建的框架/範圍中。一旦你退出遞歸調用,對象將仍然在那裏。 – 2010-09-15 06:46:03
C是一種編譯的語言,其中任何源代碼名稱(對於變量,函數等)在運行時都不可用(除了可能可選的調試,-g)。 Objective C運行時增加了按名稱查找Obj C方法和類的能力,但不能添加對象,也不能添加任何C東西。所以,除非你建立自己的迷你語言解釋器結構以供參考。很多方法可以做到這一點,但簡單的語言通常會構建某種類型的變量表,如字典,數組或對象鏈接列表(結構體,元組等等),其中包含字符串名稱,對象指針(也可能是類型,大小等)。
- 1. 用動態名稱創建變量
- 2. 創建變量名動態
- 3. 在python中動態創建變量名?
- 4. 使用動態名稱在swift中創建變量
- 5. 如何在C#中使用動態名稱創建變量?
- 6. ObjectiveC中的靜態變量
- 7. 從列表中動態創建變量名稱
- 8. 動態變量名稱Coldfusion
- 9. 動態變量名稱EL
- 10. 動態名稱變量
- 11. 動態變量名稱
- 12. 動態變量名稱
- 13. 動態變量名稱Javascript
- 14. 動態JavaScript變量名稱
- 15. PHP動態變量名稱
- 16. Ruby動態變量名稱
- 17. 在循環中創建動態名稱
- 18. 創建變量名稱與變量
- 19. 在PHP中動態創建變量偶爾會生成名稱,如「_GET」或「_POST」而不是變量名稱
- 20. 創建動態名稱
- 21. 創建一個變量名動態
- 22. JavaScript警告動態創建變量名
- 23. 創建Grails的動態變量名
- 24. 創建變量名動態 - PostgreSQL的
- 25. 創建名爲.dylib從源文件的動態庫中的ObjectiveC
- 26. 動態創建變量名稱並實例化它們(Unity)
- 27. 動態名稱變量java(創建結構的解析器)
- 28. 從Mysql動態創建PHP變量名稱
- 29. 如何爲ExtJS對象創建動態變量名稱?
- 30. 從變量動態創建名稱空間對象
爲什麼你需要有一個NSArray變量有一個特定的名字? – 2010-09-15 05:52:03