我是新來的objective-c/ios,對於如何從另一個實例訪問var/instance有點困惑。我也在使用麻雀框架,可能會讓事情更加混亂,但無論如何。初學者在obj-c訪問另一個實例時感到困惑
情況是,我有一個類的實例,稱爲遊戲。 內部遊戲我有一個名爲scrollContainer的var,它本身是一個指向類類型SPSprite的實例的指針。
我能夠在遊戲中明顯使用scrollContainer,但現在我需要從另一個實例(稱爲Market)訪問scrollContainer,這就是我不確定的地方。
我在Game.m中聲明瞭(我的術語可能都是錯的)scrollContainer,所以我想我需要做的是在Game.h中用@property實際聲明(define?)它,然後@synthasize然後如果我在Market.m中包含Game.h,那麼我將能夠從Market.m內部訪問scrollContainer var,但這不起作用,因爲它在Market.m中給我一個錯誤(未聲明的標識符)
所以我的下一個想法是這些是我的選擇...
將scrollContainer指針傳遞給Market.m初始化函數,當它第一次調用並存儲它?
我也有一個單身人士在旅途中,所以也許我存儲scrollContainer,或者在我的單身人士指向Game.m,他們嘗試從Market.m訪問scrollContainer?
哪一種是最好/最簡單的方法?
感謝您的任何建議!
UPDATE
這裏有要求的代碼段。
@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];
}
我只是在想,雖然,我必須@synthesize scrollContainer在Market.m也能在Market.m使用它一下?
實際上,它應該按照您嘗試的方式工作(在Game.h中聲明scrollContainer作爲屬性並在Market.m中導入Game.h)。你能否提供你的Game.h代碼和Market的一部分。你試圖訪問它嗎? – Tobi
只是在底部添加了一些代碼和評論。 – Phil