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

Posted

技术标签:

【中文标题】这就是我使用指针的原因吗?【英文标题】:Is this why I use pointers? 【发布时间】:2011-07-17 01:12:41 【问题描述】:

我知道这是非常基本的,但我需要澄清一下。我正在尝试开发一款 iPad 应用,但遇到了问题。我的解释可能需要太多信息,但请耐心等待。

我有两个 ViewController。一个叫做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】:

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

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

@property (nonatomic, retain) GameViewController *containingViewController;

不要忘记在您的实现文件 (Player.m) 中也添加 @synthesize containingViewController;,在您的 dealloc 中添加 [containingViewController release];

然后,在viewWillAppear方法中初始化播放器时,设置属性:

player1.containingViewController = self;

这应该可以解决您的所有问题。

【讨论】:

啊!!!!!好的!我已经完成了所有这些,但错过了最后一行。 player1. containsViewController = self;谢谢。 没问题。欢迎来到 ios 开发世界。

以上是关于这就是我使用指针的原因吗?的主要内容,如果未能解决你的问题,请参考以下文章

一维数组名为指针常量的原因

在 C 语言中:我可以让两个不同类型的指针指向同一个地址吗?

在 C 语言中,通常这就是我们使用指针获取输入的方式,那么为啥它不起作用呢?还是我在某些时候错了?

我可以将 nullptr 转换为其他指针类型吗?

这就是人脸和图像识别越来越重要的原因

这就是我想immigrate的原因