我正在尝试编辑像这样的方法中的对象:
-(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的扩展)。
答案 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];