多个实例的变量总是相同的
问题描述:
我完全不赞成用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]];
我希望我已经通知你足够多,你可以帮忙。如果我需要添加更多信息,请随时提问。
答
它看起来像你说的那些变量的声明是这样的:
// 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
这正是我在做什么错。看起来很明显,现在你提到它。非常感谢你。 – mahulst