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;

我从第三类声明了 Building 的实例。我通过使用建筑物的引用从第三类设置了 strName:

   building.reference.strName=strVal;

但这给了我空值。我如何通过使用 Building 类的引用来设置这个值。

4

1 回答 1

1

确保您referenceBuilding's-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](以获取具有您已经实例化的节点的建筑物)。

请注意,如果 Node 不直接从 NSObject 继承(它自己不做任何事情init),您也应该调用超类init例程,因此您的初始化程序将变为:

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