2012-05-14 145 views
0

我已經命名的類建築:聲明一個類的對象到另一個類

@interface Building : NSObject 
@property (nonatomic,retain)NSString* node; 
@property (nonatomic,retain)NSString* subnode; 
@property (nonatomic,retain)NSString* supernode; 
@property (nonatomic,retain)Node *reference; 
@end 

我點名另一個類:

@property (nonatomic,retain)NSMutableArray* strArray; 
@property (nonatomic,retain)NSString * strName; 

節點我宣佈建設的情況下,從第三類。我已經設置通過使用建築物的參考strName從第三類:

building.reference.strName=strVal; 

但是,這給了我空值。如何我通過使用Building類的引用來設置此值。

+1

你實際上正在創建一個'Building'實例,然後將它的'reference'設置爲你同樣創建的'Node'? –

+1

另外,你確定strVal不爲null嗎? – sosborn

回答

1

確保您初始化referenceBuilding-init方法。例如(假設Node也直接從NSObject繼承):

- (id) init { 
    self.reference = [[Node alloc] init]; 
    return self; 
} 

此外可以編寫一個指定初始化劑方法時初始化在現有節點通過,例如-initWithNode: (Node)myNode。然後你會得到你的Building-init方法來調用[self initWithNode:[[Node alloc] init]

然後初始化一個Building對象,你可以調用[[Building alloc] init](以獲得建築用空節點)或[[Building alloc] initWithNode:myNodeObject](以獲得與您已經實例化一個節點一個大廈)。

注意,如果節點不直接從NSObject的繼承(這並不在它自己的init做任何事情),你應該調用父類init程序,同時,讓你的初始化器會成爲:

- (id) init { 
    if(self = [super init]) { 
     self.reference = [[Node alloc] init]; 
    } 
    return self; 
} 
相關問題