Что на самом деле делает Objective-C, когда вы объявляете объект?

Я прочитал руководство по управлению памятью от Apple и не понимаю, где объясняется этот случай ...

Часто, особенно когда я пишу метод класса для возврата экземпляра класса, я начинаю его так, потому что именно так я видел это, и это работает.

[ПРИМЕЧАНИЕ] Этот код взят из памяти - я обновлю его, когда вернусь домой, чтобы показать пример, который действительно работает (я сделал это, чтобы проиллюстрировать его, но, очевидно, я не помню его достаточно хорошо, чтобы что-то построить это имеет смысл ...

[EDIT] Вот мой реальный метод - конечно, все были правы в том, что я, должно быть, звоню 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 в значительной степени просто устанавливает его на ноль, чтобы в нем не было мусора (верно?) * Поскольку я автоматически освобождаю экземпляр, возвращаемый объект также автоматически освобождается.

Спасибо за помощь в понимании этого!

8
задан Steve 11 June 2011 в 00:06
поделиться