为什么我的数组属性在方法执行后被丢弃?

时间:2014-11-26 06:31:08

标签: objective-c

编辑:第一个答案已经猜到是因为我没有使用协议来向后传递数据。"我目前正在实施该功能,并且我们会查看它是否已修复它。


我对iOS / objective-C非常陌生。我在班上有这个属性:

@interface GameController

@property (strong, nonatomic) NSMutableArray* targets;

@end

然后我在其中一个addObject方法的主体中对数组使用GameController,并且它没有抛出任何错误,所以我认为直到我检查{ {1}}在该方法结束时发现它为零。所以我在该方法的开头初始化它:

[_targets count]

然后计数为6.但是一旦我用另一种方法阅读if(self.targets == nil){ self.targets = [[NSMutableArray alloc] init]; } ,它就会回到零。为什么会这样?我在初始化时做错了什么?

编辑:有趣的是,在另一种方法中,如果我检查,它不再是self.targets - 它已被初始化。但它仍然是空的。很困惑!

Edit2:好的,我已经将代码上传到了pastebin,尽可能地删除了无关的内容。

首先调用nil,当应用程序加载时,它会绘制一堆TileViews和TargetViews,在进程中实例化drawMainControls。每个TileView都有一个GameController属性,在实例化后立即将其指定为主GameController。

TileView检测到点击并在其控制器上调用self.targetsaddPossibleLetter是检查addPossibleLetter数组并空手而归的方法。

这是GameController.h文件:http://pastebin.com/C30Mi2LL

这是GameController.m文件:http://pastebin.com/cvf2WmBs

这是TileView.m文件:http://pastebin.com/gehJGYBD

1 个答案:

答案 0 :(得分:1)

在初始化此方法的方法之前,您有可能正在调用另一个方法。 我想当你以你正在做的方式向后传递数据时,你正确地意识到使用协议和委托。你可以看看他的链接,它非常清楚地解释了这个概念。 Passing Data between View Controllers