创建变量名变量(Objective-c)

时间:2012-12-25 18:15:13

标签: objective-c macos cocoa

我想做这样的事情:

·H

LocalRoom* zone1;
LocalRoom* zone2;
LocalRoom* zone3;
LocalRoom* zone4;
etc....

的.m

NSString *number = 1;
NSString *variable = [NSString stringWithFormat: @"zone%@", number]
[[variable variableValue] broadcastChatMessage:redStringPrefix fromUser:@"server"];

模仿:

[zone1 broadcastChatMessage:redStringPrefix fromUser:@"server"];

我该怎么做?有可能吗?

3 个答案:

答案 0 :(得分:6)

给出像“zone1”,“zone2”等名称,我会创建一个数组而不是字典。无论哪种方式,这些都不应该是单独的变量。

答案 1 :(得分:3)

您可以使用Key-Value Coding执行类似操作。你会写

[[self valueForKey:variable] broadcastChatMessage:redStringPrefix fromUser:@"server"];

而不是

[[variable variableValue] broadcastChatMessage:redStringPrefix fromUser:@"server"];

这当然要求zone1zone2等是self上的实例变量(或属性)。

答案 2 :(得分:3)

 @property(strong) NSMutableDictionary *zones;

 -(id)init {
   ....
   _zones = [[NSMutableDictionary alloc] init];
   ....
 }

 aZone = [_zones objectForKey: [NSString stringWithFormat:@"zone%d", someZoneNumber]];

...等......