你如何打印实例名称?

cjg*_*cjg 1 cocoa objective-c

我正在尝试在数组中打印几个对象的名称.它们都是名为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);
    }
Run Code Online (Sandbox Code Playgroud)

Pet*_*sey 5

名称stock1,stock2以及stock3不属于这些对象; 它们属于您将这些对象放入的变量.

即便这样也不太对劲.变量有指针; 你将每个对象的指针放入每个变量中.

把对象想象成一个气球; 指针是您保持对象的字符串.如果你没有将指针绑在任何东西上,或者你解开它,那么物体就会飞走.变量是用于绑定气球字符串的夹板,只要变量存在且气球被绑定到它们,气球就会保留在你的身上.

您可以将单个字符串绑定到多个帖子.您可以将同一对象(的指针)分配给多个变量:

stock1 = [[StockHolding alloc] init]; //Or something
stock2 = stock1;
stock3 = stock2;
Run Code Online (Sandbox Code Playgroud)

在最后一行之后,对象的名称是什么?

没有.它没有.或者,如果它具有name属性,则它没有更改,因为这些行都没有设置该属性.

什么这些行做的是领带的一个股份制的字符串到三个不同的岗位:所有三个变量,命名变量stock1,stock2stock3-now指向同一个对象.