Я прочитал руководство по управлению памятью от Apple и не вижу, где объясняется этот случай ...
Много раз, особенно при написании метода класса, возвращающего экземпляр класса, яЯ начну так, потому что я так и видел, и это работает.
[ПРИМЕЧАНИЕ] Этот код из памяти - я обновлю его, когда вернусь домой, чтобы показать примерэто действительно работает (я придумал это, чтобы проиллюстрировать это, но, очевидно, я недостаточно хорошо помню это, чтобы создать что-то, что имеет смысл ...
[ПРАВИТЬ] Вот мой фактический метод - конечно, все были правычто я должен звонить alloc
, что я есть.
+ (id)player
{
Player *player = nil;
if ((player = [[[super alloc] initWithFile:@"rocket.png"] autorelease])) {
[player setProjectileType:kProjectileBullet];
[player setProjectileLevel:1];
[player setInvincible:YES];
[player setEmitter:[CCParticleSystemQuad particleWithFile:@"exhaust.plist"]];
[[player emitter] setPosition:ccp(0.0, player.contentSize.height/2)];
[player addChild:player.emitter];
}
return player;
}
Итак, что я получил из ответов: * Объявление экземпляра просто возвращает мне указатель на ячейку памяти и сообщает Xcode, какой класс у объектабудет. * Установка указателя на nil в значительной степени просто устанавливает его на ноль - удерживая его от мусора (правильно?) * Так как я автоматически освобождаю экземпляр, возвращаемый объект также автоматически высвобождается.
Спасибо, что помогли мне понять это!