gpt4 book ai didi

ios - Ivar 显示 null,尽管它被强引用、初始化和分配

转载 作者:行者123 更新时间:2023-11-28 22:29:40 31 4
gpt4 key购买 nike

我有一个名为 A 的类,它有一个名为 lines 的 NSMutableArray 类型的公共(public) ivar。我在 init 方法中分配和初始化 ivar。另一方面,我有另一个名为 B 的类,它强引用了 A 类的 ivar。我在 B 类的 init 方法中分配并初始化了 A 类。我期望的是:

在类 B 分配并初始化类 A 作为其实例变量后,类 A 的公共(public) ivar 不应为 null。我得到的:

当我执行以下操作时,我发现类 A 变量的行变量为空:

   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)部分:

 @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;

最佳答案

如果 lines 只是一个 ivar,则在调用 [[ClassA alloc]init ]; 时不会调用其 setter。我建议使它成为一个强大的属性:

A类.h:

@property(nonatomic,strong) NSMutableArray *lines;

在 ClassA 初始化方法中:

//initiliaze lines:
self.lines = [[NSMutableArray alloc]init];

关于ios - Ivar 显示 null,尽管它被强引用、初始化和分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17800613/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com