多个实例的变量始终相同

时间:2011-11-27 23:32:56

标签: objective-c cocos2d-iphone

我根本不是用C语言开发的专家。只是为了好玩而尝试这些东西。我的问题可能只是一个指针/分配问题,但我无法弄明白。

我的问题是,当我创建一个名为Port的类的两个实例,并希望为该实例内的变量分配不同的值。 product1和product2的值,但是当我更改其中一个时,其他实例获得相同的值。我当然想要的是能够为每个实例的变量定义不同的值。

变量在Port类中声明如下:

NSObject *product1, *product2; 

改变它们的方法是这样的:

-(void) setProducts: (NSObject*)setProduct1 andTwo: (NSObject*)setProduct2
{
    product1 = setProduct1;
    product2 = setProduct2;
}

在main中我在init函数中创建端口

   Port *port1 = [[Port alloc] init];        
    [port1 setProducts:@"uno" andTwo: @"dos"];       
    [ports addChild:[port1 getMenuItem]];    

    Port *port2 = [[Port alloc] init];
    [port2 setProducts: @"tres" andTwo: @"viero"];
    [ports addChild:[port2 getMenuItem]];

我希望我已经告诉你了,你可以帮帮忙。如果我需要添加更多信息,请随时询问。

1 个答案:

答案 0 :(得分:2)

看起来你说这些变量的声明是这样的:

// Port.m

#import "Port.h"

NSObject *product1, *product2;

@implementation Port

// Method implementations...

@end

这意味着那些是“类变量”的Objective-C版本。该类的每个实例都可以访问它们,但它们对于每个实例都是相同的变量。如果你想要实例变量,你应该将它们放在class's interface declaration中,如下所示:

@interface Port : NSObject 
{
    NSObject * product1;
    NSObject * product2;
}

// Declare methods...

@end

另请参阅:Learning Objective-C: A Primer