2013-03-06 136 views
0

我需要通過從InGameLayer到AppDelegate中的數組訪問數組,所以這裏就是我在InGameLayer.h無法通過單

@interface InGameLayer : CCLayer 
@property (nonatomic, strong) CCArray *heroArray; 
+(InGameLayer *)sharedInGameLayer; 

在InGameLayer.m

static InGameLayer* sharedInGameLayer; 
+(InGameLayer*)sharedInGameLayer 
{ 
    if (sharedInGameLayer == nil) 
    { 
     sharedInGameLayer = [[self alloc] init]; 
    } 
    return sharedInGameLayer; 
} 

//add Object if the button is tapped 
- (void)PlayerButton1Tapped:(id)sender 
{ 
    CCSprite *hero =[CCSprite spriteWithFile:@"hero.png"]; 
    [_heroArray addObject:hero]; 
} 

in AppDelegate.m

-(void) applicationDidEnterBackground:(UIApplication*)application 
{ 
    CCArray *heroArray = [InGameLayer sharedInGameLayer].heroArray; 
    CCLOG(@"array = %d", heroArray.count); 
} 

問題在於array = 0,無論有多少對象添加到heroArray中。 請幫我解決這個問題。預先感謝您的時間。

回答

0

你永遠不會創建你的數組。您的財產聲明會自動合成實例變量CCArray *_heroArray及其訪問方法。所有的實例變量都在對象創建時初始化爲零,並且由於您從不在實例變量中存儲指向實際CCArray對象的指針,因此它保持爲nil

在你的類的init方法,你應該做的

_heroArray = [[CCArray alloc] init]; 
+0

你好,是的,我有我的初始化數組像這樣在我的init方法。問題是我沒有在init方法中添加我的Object。我想要用戶通過單擊按鈕添加對象。對象永遠不會傳遞給AppDelegate(該數組在AppDelegate中爲零)。你能否建議一種方法來做到這一點?謝謝您的回覆 – user1817517 2013-03-06 15:26:53