2009-09-22 3 views
0

После прочтения Руководства по управлению памятью Я пытаюсь получить мою голову вокруг того, что происходит здесь, мое понимание «до сих пор» является ...Управление объектами метода доступа?

- (EngineClass *)engine { 
    return [[engine retain] autorelease]; 
} 
  1. Я возвращаю указатель на объект Engine.
  2. Удержание счета объекта увеличивается до записи, мы делаем новый указатель на объект
  3. Баланс, указанный выше, сохраняя, указав автореферат в какой-то будущей точке.

Есть ли я на правильном пути?

веселит -gary-

ответ

1

Я не уверен, я бы сказал, что это сохранить «для записи мы делаем новый указатель на объект.»

Пара удерживает-autorelease, чтобы указать, что есть другой объект, интересующийся возвращаемым значением, поэтому ему необходимо придерживаться, по крайней мере, этого долгого, но другой объект не имеет надлежащего свойства возвращаемого значения. Без сохранения, если объект, выполняющий этот метод, будет освобожден сразу же после этого, у двигателя могут быть другие владельцы, и он также будет немедленно освобожден. Это не ожидаемое поведение. Выполнение этого способа приводит к тому, что собственность объекта не исчезает до тех пор, пока пул авторезистов не будет слит.

+0

Спасибо, я вижу сейчас, я не думал об удержании авторекламы как о паре. Также я думаю, что меня перепутали, думая с точки зрения увеличения удерживания, чтобы показать, что новый объект теперь указывает на двигатель. Кажется, я понял это сейчас. – fuzzygoat

Смежные вопросы