我正在尝试打印数组中几个对象的名称。它们都是名为StockHolding的类的实例化,并命名为stock1,stock2和stock3。但我无法弄清楚如何让NSLog打印这些实例的实际名称。相反,它打印出实例所属类的名称和内存地址(例如,“2013-12-12 21:06:05.782股票[18093:303]股票价值2.30,当你买它。它现在价值4.50你有40股。“)。我希望它打印“Stock stock1值得......”如何让NSLog打印出阵列中实例的名称?以下代码段:
NSMutableArray *myStocks = [[NSMutableArray alloc] init];
[myStocks addObject:stock1];
[myStocks addObject:stock2];
[myStocks addObject:stock3];
for (StockHolding *s in myStocks) {
NSLog(@"Stock %@ was worth %.02f when you bought it. It's now worth %.02f. You have %d shares of it.", s, s.purchaseSharePrice, s.currentSharePrice, s.numberOfShares);
}
答案 0 :(得分:5)
名称stock1
,stock2
和stock3
不属于这些对象;它们属于您将这些对象放入的变量。
即便这样也不太对劲。变量有指针;你将每个对象的指针放入每个变量中。
将物体视为气球;指针是您保持对象的字符串。如果你没有将指针绑在任何东西上,或者你解开它,那么物体就会飞走。变量是绑定气球字符串的夹板,只要变量存在且气球被绑定到它们,气球就会保留在你的身上。
您可以将单个字符串绑定到多个帖子。您可以将同一对象(的指针)分配给多个变量:
stock1 = [[StockHolding alloc] init]; //Or something
stock2 = stock1;
stock3 = stock2;
在最后一行之后,该对象的名称是什么?
无。它没有。或者,如果它具有name
属性,则它没有更改,因为这些行都没有设置该属性。
这些行的作用是将一个StockHolding的字符串绑定到三个不同的帖子:所有三个变量 - 名为stock1
,stock2
和stock3
的变量 - 现在指向同一个对象
答案 1 :(得分:4)
实现description
方法以返回描述实例的任何字符串。对于调试目的非常有用。不应该用于向用户显示字符串。
description
方法被记录为NSObject
documentation的一部分。
通过这样做,NSLog(@"array %@", array)
将包含由description
的实现确定的数组中所有对象的描述。