Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про IOS: alloc, init

В чем разница между alloc/init и retain/release в Objective-C?

Вопрос проверяет понимание классической модели управления памятью Objective-C и её связи с ARC.

Короткий ответ

alloc/init отвечает за создание объекта и начальное владение им. retain/release управляют временем жизни уже созданного объекта. В ARC эти вызовы вставляются автоматически компилятором. Понимание разницы важно для работы с legacy-кодом и анализа утечек.

Длинный ответ

Objective-C исторически использовал явную модель владения, которую ARC автоматизировал, но не отменил концептуально.

Определение

  • alloc/init — создание объекта и получение на него владения

  • retain/release — управление временем жизни объекта

alloc / init

Процесс создания объекта состоит из двух шагов:

  1. alloc — выделяет память и создаёт объект

  2. init — инициализирует его состояние

После alloc/init:

  • вызывающая сторона владеет объектом

  • retain count равен 1

retain / release

Эти методы:

  • retain увеличивает retain count

  • release уменьшает retain count

Когда retain count становится 0:

  • вызывается dealloc

  • память освобождается

ARC и эти операции

В ARC:

  • нельзя вызывать retain/release напрямую

  • компилятор сам вставляет эти вызовы

  • логика владения остаётся прежней

Почему это всё ещё важно

Даже при ARC полезно понимать:

  • кто владеет объектом

  • кто обязан “отпустить” ссылку

  • где может возникнуть retain cycle

Это особенно критично:

  • в старых SDK

  • при работе с C-API

  • при отладке утечек

Краткий вывод

alloc/init — это создание и первичное владение, retain/release — управление временем жизни. ARC лишь автоматизирует эти правила, но не меняет их суть.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • IOS

    IOS

Ключевые слова

#alloc

#init

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.