私はobjective-c/iosを初めて使用し、別のインスタンスからvar/instanceにアクセスする方法について少し混乱しています。とにかく物事をもっと混乱させるかもしれないSparrow-frame作品も使っています。
状況は、Gameというクラスのインスタンスがあるということです。ゲーム内には、scrollContainerという変数があります。これは、それ自体がクラスタイプSPSpriteのインスタンスへのポインターです。
明らかにゲーム内でscrollContainerを問題なく使用できますが、別のインスタンス(Marketと呼ばれる)からscrollContainerにアクセスする必要があり、それがわかりません。
私はGame.m内でscrollContainerを宣言していました(私の用語はおそらくすべて間違っています)ので、私がする必要があるのは、実際にGame.hで@property、次に@synthasizeを使用して宣言(定義?)することだと思いました。 Market.mにGame.hを含めると、Market.m内からscrollContainer変数にアクセスできますが、Market.m(宣言されていない識別子)でエラーが発生するため、機能しません。
だから私の次の考えはこれらが私の選択肢です...
最初に呼び出されたときにscrollContainerポインターをMarket.minit関数に渡して保存しますか?
外出先でもシングルトンを持っているので、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で使用できるようにするには、Market.mでもscrollContainerを@synthesizeする必要があると思いました。