iOS:编辑方法内的对象

时间:2013-12-04 16:14:02

标签: c++ ios cocos2d-iphone

我正在尝试编辑像这样的方法中的对象:

-(void) createSprite:(CatSprite*) sprite{
UIImage *image = [UIImage imageNamed:BASE_SPRITE_IMAGE];
CGImageRef imageRef = image.CGImage;
sprite =[CatSprite spriteWithCGImage:imageRef  key:nil];

}

和这样的方法的调用:

[self createSprite:mySprite];

调试方法时,会分配对象精灵,但在执行该方法后,对象mySprite为null。谢谢。 PS:mySprite是CatSprite类型的实例变量(来自CCSprite的扩展)。

1 个答案:

答案 0 :(得分:2)

首先,我假设你正在使用ARC。其次,你有两种方法可以做到这一点,不过我推荐第一个选项...

选项1

返回一个新的精灵,而不是试图修改调用者的指针:

- (CatSprite *)createSprite{
    UIImage *image = [UIImage imageNamed:BASE_SPRITE_IMAGE];
    CGImageRef imageRef = image.CGImage;
    return [CatSprite spriteWithCGImage:imageRef key:nil];
}

您可以使用以下方法调用此方法:

mySprite = [self createSprite];

选项2

将指针传递给指针,并取消引用:

- (void)createSpriteUsingSpritePointer:(CatSprite **)spritePointer{
    UIImage *image = [UIImage imageNamed:BASE_SPRITE_IMAGE];
    CGImageRef imageRef = image.CGImage;
    *spritePointer = [CatSprite spriteWithCGImage:imageRef  key:nil];
}

您可以使用以下方法调用此方法:

[self createSprite:&mySprite];