gpt4 book ai didi

objective-c - 初学者对 obj-c 中从另一个实例访问一个实例感到困惑

转载 作者:行者123 更新时间:2023-11-29 04:19:48 25 4
gpt4 key购买 nike

我是 Objective-C/ios 的新手,对于如何从另一个实例访问 var/实例有点困惑。我也在使用 Sparrow 框架工作,这可能会让事情更加困惑,但无论如何。

情况是我有一个名为 Game 的类的实例。在游戏中,我有一个名为scrollContainer的变量,它本身就是一个指向SPSprite类类型实例的指针。

我可以在游戏中使用scrollContainer,显然没有问题,但现在我需要从另一个实例(称为Market)访问scrollContainer,这就是我不确定的地方。

我在 Game.m 中声明(我的术语可能全错)scrollContainer,所以我想我需要做的实际上是在 Game.h 中声明(定义?)它,使用 @property,然后 @synthasize 和那么如果我将 Game.h 包含在 Market.m 中,那么我将能够从 Market.m 内部访问scrollContainer var,但这不起作用,因为它在 Market.m 中给了我一个错误(未声明的标识符)

所以我的下一个想法是这些是我的选择......

首次调用 Market.m 初始化函数时将其传递给 scrollContainer 指针并存储它?

我也有一个正在运行的单例,所以也许我存储了scrollContainer,或者可能在我的单例中存储了一个指向Game.m的指针,并且他们尝试从中访问Market.m中的scrollContainer?

哪一种是最好/最简单的方法?

感谢您的建议!

更新

这是请求的代码片段。

@interface Game : SPSprite
{
@private
float mGameWidth;
float mGameHeight;
}

- (id)initWithWidth:(float)width height:(float)height;

@property (nonatomic, assign) float gameWidth;
@property (nonatomic, assign) float gameHeight;
@property SPSprite *scrollContainer;

@end

还有一点来自 Market.m

- (void)onCloseMarketButton:(SPEvent *)event
{
NSLog(@"Close Market Clicked!!");

[self removeAllMarketButtons];

[closeMarketButton removeFromParent];

scrollContainer.visible = YES;//gives error

[self removeFromParent];

}

我只是想,我是否也必须在 Market.m 中 @synthesize scrollContainer 才能在 Market.m 中使用它?

最佳答案

在您的代码中,您写道:

scrollContainer.visible = YES;//gives error

scrollContainer 是如何初始化或分配的?

您提到:

Pass the scrollContainer pointer to the Market.m init function when it's first called and store it?

是的,这是一个可行的方法。

//Some where in Game.m
Market *market = [[Market alloc]initWithScrollContainer:self.scrollContainer];

//Then in Market.m
-(id)initWithScrollContainer:(SPSprite*)scrollContainer{
//Do your initialization
}

关于objective-c - 初学者对 obj-c 中从另一个实例访问一个实例感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13110523/

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