我有一个名为 A 的类,它有一个名为 NSMutableArray 类型的公共 ivar。我在 init 方法中分配和初始化 ivar。另一方面,我有另一个名为 B 的类,它对 A 类类型的 ivar 有强引用。我在 B 类的 init 方法中分配和初始化 A 类。我期望的是:
在类 B 分配并初始化类 A 作为其实例变量之后,类 A 的公共 ivar 不应为空。我得到什么:
当我执行以下操作时,我发现 A 类变量的 lines 变量为空:
myClassAVariable=[[ClassA alloc]init ];
NSLog(@"The lines object is %@",[myClassAVariable lines]);
注意:我使用的是 cocos2d。
编辑:
这是 ClassA.h 文件的一部分;
@interface ClassA : CCLayer
{
NSMutableArray *lines;
}
@property(strong,nonatomic)NSMutableArray *lines;
下面是 ClassA 的 init 方法的一部分:
if( (self=[super init]) ) {
lines=[[NSMutableArray alloc] init];
}
return self;
这是ClassB的接口部分:
@interface ClassB : CCLayer
{
DrawLayer *draw;
}
@property(strong,nonatomic)DrawLayer* draw;
最后,这是 ClassB 的初始化:
if( (self=[super init]) ) {
draw=[[DrawLayer alloc] init];
CCLOG(@"Lines object is %@",[draw lines]);//Shows "Lines object is (null)"
}
return self;