Подходы к управлению памятью сильно различаются для разных языков и платформ, причем не только по уровню видимости и контроля программиста, но и по реализации.
Несмотря на это, основы выделения и освобождения памяти примерно одинаковы, когда вы переходите на уровень ОС. Конечно, есть различия, настройки и оптимизации, но обычно программисту не приходится иметь дело с такими деталями.
Objective-C является интересным гибридом, поскольку в версии 2.0 добавлена дополнительная сборка мусора, но также сохраняется возможность использовать подсчет ссылок (retain / release / autorelease). Фактически, один и тот же код может выполняться в любом режиме в зависимости от флагов компиляции и настроек другого кода, загруженного в том же процессе. Это нетипично для языков программирования - обычно вы получаете либо управляемый (автоматический), либо неуправляемый (ручной) код на основе написанного вами кода, а иногда язык / платформа вообще не предоставляет возможности выбора (например, Java).
Один вкус не обязательно лучше, чем другой, и до сих пор все еще случаются религиозные споры о том, «используют ли настоящие программисты сборщик мусора», но не слишком переживайте по этому поводу. Общие знания о том, как различные подходы к управлению памятью никогда никому не вредят, и, как правило, достаточно понять подход к языку (языкам), на которых вы кодируете.