-3

假设我创建了一些名为 Rectangle 的类。我创建了一个可变数组(称为 allRectangles)并向数组中添加四个不同的矩形:

前任:

Rectangle *rect1 = [[Rectangle alloc] init];
[allRectangles addObject: rect1];

...对 rect2、rect3 和 rect4 重复

如果我使用遍历数组 for (Rectangle *rect in allRectangles)并且只想输出每个数组的名称,我该怎么做?例如,如果我这样做:

NSLog(@"%@", rect)

它将打印类名和内存地址。我希望它打印 rect1 然后 rect2 等等...请帮忙???

4

3 回答 3

4

您的代码片段中的对象没有名称,至少没有您显示的那样。也就是说,Rectangle该类似乎没有name属性或类似的东西。

我怀疑您将变量名称(例如rect1)与对象名称混淆了。它们不是同一件事。rect1是一个指针变量,它指向一个对象(Rectangle类的一个实例),但这一事实并不影响该对象。一个对象在其生命周期中可能被许多不同的变量指向,但这并不意味着任何这些变量的名称都是对象的名称。(请注意,在您的 for-in 循环中,每个对象都由变量 指向rect。您是否希望该事实导致对象被命名为“rect”?)

如果您希望一个对象具有类似“rect1”的名称,那么您需要向name该类添加一个属性并在您创建的每个对象上设置该属性。

于 2013-07-06T07:56:26.263 回答
0

为什么不将元素存储在 anNSDictionary而不是 anNSArray并通过变量名检索它们?

NSMutableDictionary *dict = [NSMutableDictionary new] ;   

Rectangle *rect1 = [[Rectangle alloc] init];
[dict setObject:rect1 forKey:@"rect1"];


for (NSString *key in [dict allKeys]) {
    NSLog(@"%@ => %@", key, [dict objectForKey:key]); 
}
于 2013-07-06T08:37:26.133 回答
0

局部变量名称是源代码信息,它不存在于您的运行代码中,它甚至很有意义下面的“矩形名称”是什么

Rectangle * rect1 = [[Rectangle alloc] init];
Rectangle * rect2 = rect1;

矩形1或矩形2

如果你想让你的矩形有一个名字,你必须给它们一个 name 属性并在你创建每个矩形时设置它。

于 2013-07-06T08:56:47.457 回答