我是 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 中使用它?