0

我是 Objective-c/ios 的新手,我对如何从另一个实例访问 var/instance 感到有点困惑。我也在使用麻雀框架的作品,这可能会使事情更加混乱,但无论如何。

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

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

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

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

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

我也有一个单例,所以也许我在我的单例中存储了 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 中使用它?

4

1 回答 1

1

In your code, you wrote:

scrollContainer.visible = YES;//gives error

How is scrollContainer initialized or assigned?

You mentioned:

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

Yes, this is a feasible approach.

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

//Then in Market.m
-(id)initWithScrollContainer:(SPSprite*)scrollContainer{
    //Do your initialization
}
于 2012-10-28T20:08:53.540 回答