这是我使用指针的原因吗?

时间:2011-07-17 01:12:42

标签: objective-c ios xcode pointers uiviewcontroller

我知道这是非常基本的,但我需要澄清。我尝试开发iPad应用程序但遇到了麻烦。我的解释可能需要一些太多信息,但请耐心等待。

我有两个ViewControllers。一个叫做NewGameViewController,另一个叫做GameViewController。在NewGameViewController中,我像这样显示GameViewController:

GameViewController *controller = [[GameViewController alloc] initWithNibName:@"GameViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];

因此,这会在内存中创建一个GameViewController实例。 GameViewController中定义了一些ivars和方法。其中一个ivars是一个数组,当GameViewController加载时(在viewWillAppear方法中),该数组会被替换为座位对象。

我还有一个名为player的对象。这只是UIView的一个子类。当GameViewController加载时,它会向子视图添加最多六个玩家对象。我需要每个玩家对象能够访问由NewGameViewController加载的GameViewController内存中的相同实例。我会在我的播放器对象中使用指针来访问GameViewController的同一个实例吗?我发现如果我将一个新的GameViewController实例加载到内存中并尝试使用它,那么数组ivar往往是空的,因此无法使用。我怎么能确定我的指向GameViewController的指针指向正确的GameViewController实例?

1 个答案:

答案 0 :(得分:1)

  

当GameViewController加载时,它最多可添加六个玩家对象   子视图。

所以,这就是你能做的。在Player上定义一个名为containingViewController或gameViewController的属性。

@property (nonatomic, retain) GameViewController *containingViewController;

不要忘记在@synthesize containingViewController;的实施文件(Player.m)和[containingViewController release];dealloc

然后,当您在viewWillAppear方法中初始化玩家时,请设置属性:

player1.containingViewController = self;

这应该照顾你所有的问题。