我根本不是用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]];
我希望我已经告诉你了,你可以帮帮忙。如果我需要添加更多信息,请随时询问。
答案 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