我需要将一个数组从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];
}
AppDelegate.m中的
-(void) applicationDidEnterBackground:(UIApplication*)application
{
CCArray *heroArray = [InGameLayer sharedInGameLayer].heroArray;
CCLOG(@"array = %d", heroArray.count);
}
问题是array = 0,无论我添加到heroArray的对象有多少。 请帮我解决这个问题。提前感谢您的时间。
答案 0 :(得分:0)
您永远不会创建阵列。您的属性声明自动合成实例变量CCArray *_heroArray
并为其访问方法。所有实例变量都在对象创建时使用零进行初始化,并且由于您从未在实例变量中存储指向实际CCArray对象的指针,因此它保持nil
。
在班级的init
方法中,您应该
_heroArray = [[CCArray alloc] init];