Метод доступа объекта управления? - PullRequest
0 голосов
/ 22 сентября 2009

После прочтения Руководства по управлению памятью я пытаюсь разобраться в том, что здесь происходит. Мое понимание "пока" - это ...

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

Я на правильном пути?

ура -gary-

1 Ответ

1 голос
/ 22 сентября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...