Comments 5
Спасибо, интересно было прочитать. Единственное, не совсем понятно расположение сворачиваемых блоков. Такое впечатление, что некоторые из них съехали в другие разделы.
Например, блок "Где хранятся статические переменные?" находится в конце раздела "Выводы", хотя выше есть раздел "Сегменты памяти", где все это и описано. Блок "Что такое Copy-On-Write (COW)? Как можно сделать свой COW?" находится в разделе "Жизненный цикл объекта в Swift", хотя выше есть раздел посвященный COW.
Привет! Спасибо за комментарий)
На самом деле это было сделано специально. Я подчеркнул этот подход из книги "Как научиться учиться: Навыки осознанного усвоения знаний" Ульриха Бозера. Там книга строится на том, что вопросы по главе могут появляться не сразу после нее, а позже, например через главу. Это позволяет читателю возвращаться и искать информацию тем самым помогает усвоению материала
Объект размещается непосредственно в переменной, и при присвоении другой переменной он копируется полностью.
Неужели каждый раз Swift будет копировать весь массив целиком? Копирование — операция тяжёлая, и при больших объёмах данных она потребляет много времени и ресурсов.
Ответ — нет, и в этом помогает механизм COW (Copy-On-Write). В приведённой ситуации Swift не создаёт новую копию массива при каждом присвоении. Вместо этого он присваивает каждой переменной ссылку на общий массив, а копирование произойдёт только при изменении содержимого.
вы сами себе противоречите
дальше "Ссылка на документацию от Apple" ведет не в документацию, а куда-то в swift git репозиторий, где описание состояний мягко говоря расходится с вашим.
также есть путаница в содержании разделов, о которой уже писали выше.
И в довершение - дата написания статьи:
Grandschtien 31 авг в 12:13
И человек тут же получает приглашение на Хабр:
Приглашен
31 августа по приглашению от НЛО
Это какой-то фарм акаунтов или что? Тем более, что это очередная статья, криво сгенерированная в chatgpt
Привет! Спасибо за комментарий)
Противоречий я тут не вижу, в первом случае я говорю об общем понимании работы value типов, во втором случае я говорю об оптимизации COW, что является исключением из правила только для коллекций(которое предоставляется у Swift "из коробки").
Спасибо что обратили внимание, там действительно был недочет при описании ЖЦ объекта. Я его поправил:
3. Deinited — здесь у объекта нет сильных ссылок, но могут быть слабые или бесхозные ссылки.
Если слабых ссылок нет и счетчик бесхозных ссылок достигает 0, объект переходит в Dead.
Если есть слабые ссылки и счетчик бесхозных ссылок достигает 0, объект переходит в Freed.
Также обновил формулировку с ссылкой на файл в репозитории Apple.
По поводу путаницы, я уже отвечал) Это было сделано намеренно, хотел попробовать метод, который я увидел в книге.
Ну а что касается приглашения, то тут обвинение необоснованно. Я писал статью не для того, чтобы его получить, а для того, чтобы поделиться своими заметками с сообществом, и буду продолжать ими делиться в дальнейших статьях)
Память в Swift