Я пытаюсь редактировать объект внутри метода следующим образом:
-(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).
Во-первых, я предполагаю, что вы используете 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];