2011-11-27 64 views
0

我完全不赞成用C语言开发。只是尝试这些东西的乐趣。我的问题可能只是一个指针/分配问题,但我无法弄清楚。多个实例的变量总是相同的

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

变量声明在端口类是这样的:

NSObject *product1, *product2; 

而要改变它们的方法是这样的一个:

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

里面的主我在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]]; 

我希望我已经通知你足够多,你可以帮忙。如果我需要添加更多信息,请随时提问。

回答

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

+0

这正是我在做什么错。看起来很明显,现在你提到它。非常感谢你。 – mahulst

相关问题