0

Building という名前のクラスがあります:

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

Nodeという名前の別のクラスがあります

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

3 番目のクラスから Building のインスタンスを宣言しました。建物の参照を使用して、3 番目のクラスから strName を設定しました。

   building.reference.strName=strVal;

しかし、これは私にnull値を与えます.Buildingクラスの参照を使用してこの値を設定するにはどうすればよいですか.

4

1 に答える 1

1

のメソッドで初期化referenceしていることを確認してください。例(からも直接継承すると仮定):Building-initNodeNSObject

- (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]取得する) または (既にインスタンス化されたノードを持つ建物を取得する) を呼び出すことができます。

Node が NSObject から直接継承しない場合 (それ自体では何も行わない場合)、スーパークラスルーチンもinit呼び出す必要があることに注意してください。したがって、初期化子は次のようになります。init

- (id) init {
    if(self = [super init]) {
        self.reference = [[Node alloc] init];
    }
    return self;
}
于 2012-05-14T04:15:29.873 に答える