#objective-c #cocos2d-iphone
#objective-c #cocos2d-iphone
Вопрос:
Допустим, я получил свой CCSprite для player, а затем еще один CCSprite для панели работоспособности.
CCSprite работоспособности является дочерним элементом CCSprite игрока.
По определенным причинам я решил сохранить панель работоспособности, например
[healthBarSprite retain];
Мой вопрос: поскольку я сохранил панель работоспособности, я должен запустить
[healthBarSprite release];
В какой-то момент, верно?
Вот что: панель работоспособности сохраняется, а спрайт игрока — нет. Итак, единственное, что я выпускаю, это панель работоспособности?
Если спрайт игрока был фактически сохранен, после его освобождения также автоматически освобождается индикатор работоспособности или я должен сначала освободить его, а затем игрока?
Ответ №1:
Да, вы должны отправить освобождение на панель работоспособности. Вам не нужно беспокоиться о том, освобождает ли спрайт игрока панель работоспособности; если он ее освобождает, цель состоит в том, чтобы сбалансировать сохранение, которое он сделал внутри. Все, о чем вам нужно беспокоиться, это балансировка вызовов сохранения, которые вы сделали.
Для иллюстрации, очень вероятно, что спрайт проигрывателя сохраняет свои дочерние элементы по мере их добавления и освобождает их, когда они удаляются, но независимо от этого, это деталь реализации CCSprite. Он будет беспокоиться о балансировке вызовов сохранения, которые он сделал, а вы беспокоитесь о балансировке своих.