-2

我想做这样的事情:

。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"];

我该怎么做呢?可能吗?

4

3 回答 3

6

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

于 2012-12-26T04:28:43.757 回答
3
 @property(strong) NSMutableDictionary *zones;

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

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

... ETC ...

于 2012-12-25T18:24:11.360 回答
3

您可以使用Key-Value Coding做类似的事情。你会写

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

而不是

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

这当然需要zone1,zone2等是 上的实例变量(或属性)self

于 2012-12-25T18:19:58.890 回答