различие между дренажом, выпуском, dealloc и сохраняет в Objective-C/

Хотя super() ничего не делает функционально для компилятора (конструктор суперкласса по умолчанию вызывается автоматически), он, безусловно, много для меня делает. Он говорит мне: «Не удаляйте пустой конструктор. Он существует по причине».

Прекрасным примером является то, где вы создаете управляемые bean-компоненты Spring или объекты JPA и создаете параметризованный конструктор.

@Entity
public class Portfolio {

    ...

    public Portfolio() {
        super(); // This says to me: DON'T DELETE!
    }

    /**
    *  Because there is now a parameterised constructor (me), 
    *  the default constructor no longer exists. This means
    *  that for this example, you need an empty constructor in place (above) 
    **/
    public Portfolio(String name) {
        this.name = name;
    }
}
6
задан skaffman 2 November 2009 в 08:27
поделиться

1 ответ

  • сохранить увеличить счетчик ссылок на объект
  • выпуск уменьшает ссылку на объект
  • слив используется вместо выпуска на ТОЛЬКО для объектов NSAutoreleasePool из-за некоторых тайн, связанных со сборкой мусора Objective C.
  • dealloc вызывается системой, когда значение keepCount объекта достигает 0. Это то место, где вы очищаете различные вещи от вашего объекта. имеет (как деконструктор или финализатор). Вы не должны НИКОГДА вызывать его напрямую, за исключением вызова [super dealloc] в конце ваших подпрограмм dealloc .

Вам действительно стоит просто прочитать инструкции Apple документация по управлению памятью .

23
ответ дан 8 December 2019 в 05:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: