iOS: редактировать объект внутри метода

0

Я пытаюсь редактировать объект внутри метода следующим образом:

-(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).

Теги:
cocos2d-iphone

1 ответ

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];
  • 0
    Второй способ прекрасен!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню