Есть ли быстрое правило, чтобы узнать, когда выпускать переменные Objective-C?

Существуют ли практические правила при работе с Objective-C, которые помогли бы мне понять, когда самое подходящее время для выпуска переменных?

4 ответа

Решение

NARC!:)

Если вы вызвали метод, содержащий N ew, A lloc, R etain или C opy, то вы должны release или же autorelease, В противном случае вы не трогаете это.

Конечно, все, что явно указано в документации, превосходит это правило.

Другое дело, что когда вы имеете дело с функцией C, правило NARC все еще применяется, но также получает правило Create: если функция содержит "create", то вы несете ответственность за CFReleasing или освобождение возвращенных данных.

Я настоятельно рекомендую вам прочитать правила управления памятью несколько раз. Он довольно короткий и не сложный, и как только вы поймете, что в этом документе, вам больше не придется задумываться.

По сути, думайте об этом как о владельце. Когда вы создаете объект с new, copy или же allocили когда вы сохраняете объект, вы владеете этим объектом. Объект не исчезнет, ​​пока у него есть владельцы. Когда вы закончите с объектом, вы release это, тем самым отказываясь от вашей собственности. Когда у объекта больше нет владельцев, он может уйти и может быть освобожден. Любой объект, который вы не сделали new, alloc, retain или же copy не принадлежит вам и не может гарантировать, что вы останетесь за текущей цепочкой вызовов (т. е. можно использовать его или вернуть, но не сохранять его для дальнейшего использования).

Правило большого пальца истолкования ресурса - "Получать поздно и выпускать раньше". Это означает, что вы должны приобрести ресурс как можно позже и выпустить как можно раньше. Срок службы вашего использования должен быть как можно ниже.

Есть хороший учебник Скотта Стивенсона под названием Learn Objective-C. Он также содержит раздел об управлении памятью.

Другие вопросы по тегам