2011-11-27 58 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