【发布时间】:2013-07-23 02:40:25
【问题描述】:
我有一个名为 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;
【问题讨论】:
-
你能告诉我们ClassA的init吗
-
myClassAVariable=[[ClassA alloc]]init ]语法无效,能否贴出实际代码? -
你知道它被强烈引用吗?你能粘贴
ClassA的定义吗? -
我已经更新了我的问题
-
看看下面我的回答,你需要通过
self.lines调用setter
标签: ios cocos2d-iphone