编辑:第一个答案已经猜到是因为我没有使用协议来向后传递数据。"我目前正在实施该功能,并且我们会查看它是否已修复它。
我对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.targets
。 addPossibleLetter
是检查addPossibleLetter
数组并空手而归的方法。
这是GameController.h文件:http://pastebin.com/C30Mi2LL
这是GameController.m文件:http://pastebin.com/cvf2WmBs
这是TileView.m文件:http://pastebin.com/gehJGYBD
答案 0 :(得分:1)
在初始化此方法的方法之前,您有可能正在调用另一个方法。 我想当你以你正在做的方式向后传递数据时,你正确地意识到使用协议和委托。你可以看看他的链接,它非常清楚地解释了这个概念。 Passing Data between View Controllers