какие точные удерживающие средства? - PullRequest
2 голосов
/ 12 октября 2009

Я хочу знать, что означает следующее. Я должен выпустить это? Я не выделял память для этого. Метод также является методом класса. Любая помощь?

object = [[class method] retain];

Ответы [ 2 ]

5 голосов
/ 12 октября 2009

До версии 2.0 Objective-C использовали * * 1 001 счетчик ссылок * * стратегию тысяча два для отслеживания и управления памятью. Начиная с версии 2.0 сборщик мусора может быть активирован, НО пока недоступен на iPhone.

Посмотрите здесь о стратегии счетчика ссылок Objective-C.

Теперь, 2011 год, похоже, что механизм GC устарел в пользу механизма автоматического подсчета ссылок (ARC).

С Apple

Автоматический подсчет ссылок

Автоматический подсчет ссылок (ARC) для Objective-C делает управление памятью работой компилятора. Включив ARC с помощью нового компилятора Apple LLVM, вам больше не нужно вводить retain или release снова, что значительно упрощает процесс разработки, уменьшая сбои и утечки памяти. Компилятор полностью разбирается в ваших объектах и ​​выпускает каждый объект в тот момент, когда он больше не используется, поэтому приложения работают так же быстро, как и всегда, с предсказуемой, плавной производительностью.

2 голосов
/ 12 октября 2009

Предполагая, что «метод» следует следующему соглашению, он будет возвращать либо автоматически выпущенную ссылку , либо что-то, что гарантированно будет действительным во время действия вызывающей стороны (если только метод не называется alloc, new или copy). Таким образом, без сохранения ссылка должна быть действительной в контексте немедленного вызова, но если вы хотите сохранить ее в переменной экземпляра, вам необходимо сохранить.

Так что, если вы будете использовать «объект» только в непосредственном контексте вызова, вам не нужно удерживать - иначе вы делаете.

Если вы будете делать подсчеты, очень важно, чтобы вы ознакомились с семантикой. Есть много подходящих ссылок в Интернете, но я повторю один эпатель, который уже дал, что является другим вопросом stackoverflow .

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