Iphone 将一个类的对象声明为另一个类
我有一个名为Building的班级:Iphone 将一个类的对象声明为另一个类,iphone,objective-c,Iphone,Objective C,我有一个名为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 我有另一个类,名为
@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;
我声明了三级建筑的实例。我使用建筑的引用设置了三级建筑的strName:
building.reference.strName=strVal;
但是这给了我空值。如何使用Building类的引用来设置此值。请确保在
Building
的-init
方法中初始化引用。例如(假设节点
也直接继承自NSObject
):
此外,您可以编写指定的初始化器方法,以便在初始化时传入现有节点,例如-initWithNode:(Node)myNode
。然后,您可以让您的构建-init
方法调用[self initWithNode:[[Node alloc]init]
然后,要初始化建筑
对象,可以调用[[Building alloc]init]
(以获取具有空白节点的建筑)或[[Building alloc]initWithNode:myNodeObject]
(以获取具有已实例化节点的建筑)
请注意,如果节点不直接从NSObject继承(它在自己的init
中不做任何事情),那么您也应该调用超类init
例程,这样您的初始化器将变成:
- (id) init {
if(self = [super init]) {
self.reference = [[Node alloc] init];
}
return self;
}
您是否确实创建了一个构建
实例,然后将其引用
设置为您同样创建的节点
?另外,您是否确定strVal不为null?
- (id) init {
if(self = [super init]) {
self.reference = [[Node alloc] init];
}
return self;
}