Память в IOS. ARC. Part I - Разбор вопросов с IOS собеседований

Поделиться
HTML-код
  • Опубликовано: 27 ноя 2024

Комментарии • 21

  • @РусланСабиров-х8т
    @РусланСабиров-х8т Год назад +6

    Автор, ты крутой. Так собрать и сконцентрировать полезную инфу, это дорогого стоит. Продолжай в том же духе!

  • @KoD4K7
    @KoD4K7 Год назад +12

    Команда alloc не инициализирует объект. Она только выделяет память. Именно по этой причине в Obj-C пишется MyClass *myClass = [[MyClass alloc] init], сначала выделение памяти, потом в выделенную память заноситься проинициализированный объект.

    • @devshok
      @devshok 3 месяца назад

      Да, alloc выдаёт диапазон адресов в памяти, а new записывает в этот диапазон биты при помощи наших конструкторов

  • @jackberti2238
    @jackberti2238 Год назад +1

    Лучший видос на данную тему, продолжай пилить еще видосы по другим темам, офигенно получается, лучший

  • @АлександрБулычев-у6р

    Спасибо за проделанную работу

  • @MrFndo
    @MrFndo 7 месяцев назад +2

    проверил первый пример и не получил никакого краша как и должно было быть, когда ты вызываешь DispatchQuue.main.async... и вызываешь в блоке instance.closure?(), то DispatchQueue будет держать ссылку на instance, который держит ссылку на closure, и когда вызывается instance.closure?(), instance все еще в памяти и так как closure держит unowned ссылку на свой класс memory cycle не возникает и никакого краша не может. Остальную часть видео не буду даже смотреть такой элементарный пример неправильный показан

    • @rushnfury
      @rushnfury 7 месяцев назад +2

      Можно сделать DispatchQueue.main.asyncAfter(deadline: .now() + 2) { [unowned instance] in ... }
      Будет краш.
      А вот то что автор на 8 месяцев не озаботился поправиться, это, конечно, не дело.

  • @gomayata-f2n
    @gomayata-f2n Год назад +2

    На 00:00 предпоследний вопрос , на 16:29 этот вопрос пропал из списка, и, конечно же, на него в видео не было ответа

  • @freechina4895
    @freechina4895 5 месяцев назад

    Отлично рассказываешь. Смелее 😊

  • @gomayata-f2n
    @gomayata-f2n Год назад +4

    А вообще понятия не имею зачем джуну или мидлу в принципе знать что такое side table и хранятся ли weak и unowned где-то.

    • @ROCKY35638
      @ROCKY35638 11 месяцев назад +1

      спрашивают на каждом собесе

    • @gomayata-f2n
      @gomayata-f2n 11 месяцев назад +3

      @@ROCKY35638 могут спрашивать что угодно, суть в том зачем это спрашивать - непонятно.

  • @sarvarqosimov8363
    @sarvarqosimov8363 Год назад +1

    👍

  • @vvosmoj
    @vvosmoj Год назад +4

    Красава, пушечный

  • @uranproject
    @uranproject 10 месяцев назад

    1 вопрос! не скорее всего, а никогда. тк захватываются переменные, и у арс счетчики обнуляются в конце функции.. не прав? про гк тоже есть мнение, но промолчу

  • @alexgrigoriev7133
    @alexgrigoriev7133 Год назад

    спасибо))

  • @vadim_polovoi
    @vadim_polovoi Год назад +1

    Доброго времени суток. Попробовал способ добавления в массив weak-переменных и они сразу в nil превратились. Так и должно быть?)

    • @ЖокаВсевластный
      @ЖокаВсевластный Год назад +1

      Ну они же никак не держатся в памяти другим способом, так что да

  • @iOS1927
    @iOS1927 Год назад

    капитальный красавчик

  • @gomayata-f2n
    @gomayata-f2n Год назад

    unowned safe / unowned unsafe я вообще не понял что к чему, что-то крашит что-то не крашит, это же не ответ

    • @andreykey6295
      @andreykey6295 2 месяца назад

      смысл в том что unowned - это ссылка на ячейку в памяти.
      ситуация: сильных ссылок нет, ячейка в памяти очищена. unowned safe обратиться к этой ячейки памяти и поймет что объекта там нет и крашнет прилу, а unowned unsafe обратиться к ячейки и, если эта ячейка уже содержит абсолютно "левый" объект то каки-то образом выдаст его. надеюсь я не наврал)