我有一些NSString全局變量。如何設置一個全局變量取決於參數?
我可以將它們像:
[[Globals sharedInstance] setColor1:@"red"];
[[Globals sharedInstance] setColor2:@"orange"];
但我在一個功能,與誰代表數字1,2,3參數等 我怎麼能這樣做呢?
[[Globals sharedInstance] setColorMYPARAMETER:@"orange"];
我有一些NSString全局變量。如何設置一個全局變量取決於參數?
我可以將它們像:
[[Globals sharedInstance] setColor1:@"red"];
[[Globals sharedInstance] setColor2:@"orange"];
但我在一個功能,與誰代表數字1,2,3參數等 我怎麼能這樣做呢?
[[Globals sharedInstance] setColorMYPARAMETER:@"orange"];
您可以構建使用NSSelectorFromString
基於動態方法名稱的選擇,:
int colorNum = ... ;
NSString * colorSelStr = [NSString stringWithFormat:@"setColor%d:", colorNum];
[[Globals sharedInstance] performSelector:NSSelectorFromString(colorSelStr) withObject:@"orange"];
這將創建一個字符串,它看起來像你想的方法名,然後你問將共享的全局對象與來自該字符串的SEL的「performSelector」相關聯,並將顏色字符串作爲參數。
但是,這可能表明您可以設計更好的原始代碼。爲什麼你有全局變量編號爲0-n?爲什麼不保留所有全局顏色的NSArray
,然後通過索引訪問它?
忘了冒號的setColor串後 – santhu
看起來不錯,但我有一個警告,perfomSelector可能會導致泄漏,因爲它的選擇是不明的,我想這並不重要 –
「NSInvalidArgumentException」的,理由是:「 - [全局setColor3]:發送給實例的無法識別的選擇器。 STANGE因爲我的全局變量的NSString * COLOR3確實存在 –
SEL mySel =NSSelectorFromString([NSString stringWithFormat:@"setColor%d:",num]);
[[Globals sharedInstance] performSelector:mySel withObject:@"color"];
我很確定這是不可能的。但你可以嘗試另一種方法 – Zhans