0

我有一个名为 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;             
4

1 回答 1

2

iflines只是一个 ivar,在调用[[ClassA alloc]init ];. 我建议让它成为一个强大的属性:

类A.h:

@property(nonatomic,strong) NSMutableArray *lines;

在 ClassA 初始化方法中:

//initiliaze lines:
self.lines = [[NSMutableArray alloc]init];
于 2013-07-23T02:55:05.440 回答