Swift Magic
Swift Magic
  • 15
  • 61 919

Video

Жизненный цикл ViewController | SWIFT
zhlédnutí 2,9KPřed rokem
00:00 Вступление 00:00 Методы жизненного цикла vc 00:55 init 01:19 loadView 01:33 viewDidLoad 02:05 viewWillAppear 02:28 viewWillLayoutSubviews 02:43 viewDidLayoutSubviews 03:03 viewDidAppear 03:24 viewWillDisappear 04:04 viewDidDisappear 04:55 deinit 05:09 Промежуточные итоги 07:41 Демо 13:00 Выводы
Compression Resistance & Hugging Priority | SWIFT
zhlédnutí 2KPřed rokem
00:00 Теория 05:24 Выводы 06:55 Практический пример 10:22 Заключение ссылка на статью medium.com/@dineshk1389/content-hugging-and-compression-resistance-in-ios-35a0e8f19118
Frame & Bounds | SWIFT
zhlédnutí 3,1KPřed rokem
00:00 Теория 00:54 Пример 1 02:56 Более точное определение Frame 04:02 Можно ли изменить координаты Bounds? 06:05 Center - третье свойство 07:03 Задача на изменение Bounds 10:53 Вывод
View и Layer в чем разница | SWIFT
zhlédnutí 3,1KPřed rokem
Погрузимся в основы каждого компонента и узнаем, как View и Layer взаимодействуют между собой, поговорим о различиях в их функциональности, производительности и возможностях. 00:00 Теория 00:42 Демо 05:42 CPU / GPU Bounding 07:32 Вывод
Responder chain & Hit testing | SWIFT
zhlédnutí 6KPřed rokem
В этом видео вы узнаете все, что нужно знать о двух важных концепциях в разработке приложений на Swift - цепочке отклика (Responder Chain) и тестировании касания (Hit Testing). Я покажу вам, как работает цепочка отклика, как события передаются по иерархии представлений и как это позволяет эффективно обрабатывать пользовательские взаимодействия. Вы также узнаете о тестировании касания и как сист...
KISS DRY YAGNI ПРИНЦИПЫ ПРОЕКТИРОВАНИЯ | SWIFT
zhlédnutí 4,9KPřed 2 lety
В этом видео мы разбираем принципы проектирования (программирования) KISS (Keep It Simple, Stupid), DRY (Don't Repeat Yourself), YAGNI (You Ain't Gonna Need It) и SSOT (Single Source Of Truth). Это видео подходит не только iOS разработчикам, но и другим программистам, которые хотят научиться писать простой и эффективный код.
Dependency Inversion Principle (DIP) | SWIFT ГОТОВИМСЯ К СОБЕСЕДОВАНИЮ
zhlédnutí 3,7KPřed 2 lety
В этом видео разобран принцип инверсии зависимостей - Dependency Inversion Principle и представлены краткие знания для подготовки к собеседованию на должность iOS Developer.
Interface Segregation Principle (ISP) | SWIFT ГОТОВИМСЯ К СОБЕСЕДОВАНИЮ
zhlédnutí 2,1KPřed 2 lety
В этом видео разобран принцип подстановки разделения интерфейсов - Interface Segregation Principle и представлены краткие знания для подготовки к собеседованию на должность iOS Developer.
Liskov Substitution Principle (LSP) | SWIFT ГОТОВИМСЯ К СОБЕСЕДОВАНИЮ
zhlédnutí 3,2KPřed 2 lety
В этом видео разобран принцип подстановки Барбары Лисков - Liskov Substitution Principle и представлены краткие знания для подготовки к собеседованию на должность iOS Developer.
Open Closed Principle (OCP) | SWIFT ГОТОВИМСЯ К СОБЕСЕДОВАНИЮ
zhlédnutí 2,5KPřed 2 lety
В этом видео разобран принцип открытости/закрытости - Open Closed Principle и представлены краткие знания для подготовки к собеседованию на должность iOS Developer
Single Responsibility Principle (SRP) | SWIFT ГОТОВИМСЯ К СОБЕСЕДОВАНИЮ
zhlédnutí 2,9KPřed 2 lety
В этом видео разобран принцип единой ответственности - Single Responsibility Principle и представлены краткие знания для подготовки к собеседованию на должность iOS Developer
SOLID ЗА 3 МИНУТЫ | SWIFT ГОТОВИМСЯ К СОБЕСЕДОВАНИЮ
zhlédnutí 7KPřed 2 lety
В этом видео представлены краткие знания для подготовки к собеседованию на должность iOS Developer. Разобрана тема SOLID принципов.
ООП | SWIFT ГОТОВИМСЯ К СОБЕСЕДОВАНИЮ
zhlédnutí 9KPřed 2 lety
В этом видео представлены краткие знания для подготовки к собеседованию на должность iOS Developer. Разобрана тема объектно-ориентированного программирования: наследование, инкапсуляция, полиморфизм

Komentáře

  • @Mirorval
    @Mirorval Před 3 dny

    Спасибо, очень полезно.

  • @shaamee86
    @shaamee86 Před 9 dny

    Вопрос: почему при получении оранжевой вьюхи по результатам hitTest() и назначении ее firstResponder’ом далее у нас в консоли выводится весь responder chain, хотя оранжевая вьюха может обработать тач? По идее мы не должны дальше идти же по цепочке? Возможно, ответ таков (взято из одной статьи): «UIGestureRecognizer реализует четыре метода касания, но он не является респондером. Поэтому не участвует в responder chain.» Но тогда почему не вызываются рекогнайзеры на каждой вью в responder chain, а только на оранжевой? 🤔

    • @MagicSwift
      @MagicSwift Před 8 dny

      10:20. Если вьюшка не полностью обработала событие, она передает его на уровень выше. В нашем случае, когда мы определили, что нажали именно на нее, в консоле вывелась информация об этом и затем вызвался метод super.touchesBegan, который и передал событие рекурсивно к ViewController

    • @shaamee86
      @shaamee86 Před 6 dny

      @@MagicSwiftммм, тогда вопрос другой: что значит полностью обработает событие? Какие критерии того, что является «полностью», а что - нет?

  • @Moonwalker95
    @Moonwalker95 Před 10 dny

    Ваши видео очень крутые Жаль, что так мало

  • @_c.ute.wolf_1576
    @_c.ute.wolf_1576 Před 22 dny

    Отличное объяснение! Смотрел много видео про SOLID, но только благодаря вашим примерам понял, как все принципы применять на практике. Пишу на TypeScript, не возникло трудностей в понимании Swift-кода :) Спасибо вам!!!

  • @Medovar
    @Medovar Před 27 dny

    Спасибо!

  • @rios6984
    @rios6984 Před měsícem

    ооочень полезное видео, однозначно лайк!

  • @karavaevatasha
    @karavaevatasha Před měsícem

    protocol CircleShape { func drawCircle()
} protocol SquareShape { func drawSquare()
} protocol RectangleShape { func drawRectangle()
} Class Circle { func draw(shape: CircleShape) { shape.drawCircle() } } Class Square { func draw(shape: SquareShape) { shape.drawSquare() } } Class Rectangle: rectangleShape { func draw(shape: RectangleShape) { shape.drawRectangle() } }

  • @vagangalstyan1007
    @vagangalstyan1007 Před měsícem

    Замечательно! Инфу про СРU и GPU встретил впервые, козырну на собесе, если спросят)

  • @user-vb8kt9xk5p
    @user-vb8kt9xk5p Před měsícem

    Не канал, а каналище. Автор оч хорош в подаче материала

  • @Pro-jz8wg
    @Pro-jz8wg Před měsícem

    спасибо, было полезно!

  • @tanya95583
    @tanya95583 Před měsícem

    Не пойму,почему при повороте frame(h и w) изменились и зачем рисовать вторую view? Почему не можем длину и ширины frame посчитать по повернутому прямоугольнику?

  • @nikaperepelkina4459
    @nikaperepelkina4459 Před měsícem

    спасибо)

  • @Dragonboh1
    @Dragonboh1 Před měsícem

    тема не раскрита. 1) когдато помню просто вешаеш дополнительний рекогнайзер тапа большего размери и все. 2) что ето за овверрайд objc функций в вью контролерре, тоесть сначало оно дошло до серой вьюхи потом нашло оранживою? ниче не понял, ето же должно бить если не можеш обробить. 3) что значит вьюха не может обробить тач? у нее нет соотвественного делегат метода?

    • @phat80
      @phat80 Před měsícem

      Пожалуйста, выучи русский язык 🙏

  • @raidenyamato
    @raidenyamato Před 2 měsíci

    Всё топ

  • @AnastasiaErmolaeva-sw4en
    @AnastasiaErmolaeva-sw4en Před 2 měsíci

    А что происходит с приложением когда запускается реклама ?

    • @MagicSwift
      @MagicSwift Před 2 měsíci

      Смотря какая реклама, но обычно она встроена в само приложение и до тех пор, пока не произошёл переход в браузер, приложение остаётся активным и не переходит в другие состояния

  • @raidenyamato
    @raidenyamato Před 2 měsíci

    Спасибо

  • @raidenyamato
    @raidenyamato Před 2 měsíci

    Спасибо! перед собесами, освежить знания самое то)

  • @user-ww1ur8ww8r
    @user-ww1ur8ww8r Před 2 měsíci

    Спасибо большое!!!

  • @rocotbrent
    @rocotbrent Před 2 měsíci

    Прикольно)

  • @slipknot_korn_liver652
    @slipknot_korn_liver652 Před 3 měsíci

    Спасибо за информативные видео

  • @danila8919
    @danila8919 Před 3 měsíci

    Половина людей зашла сюда про 3д моделирование смотреть

  • @yacoder-proit
    @yacoder-proit Před 3 měsíci

    Крутейший видос по теме! Спасибо за такое качественное объяснение)

  • @MetaFishing
    @MetaFishing Před 3 měsíci

    Супер! Спасибо

  • @gabibli
    @gabibli Před 4 měsíci

    Божественно

  • @gabibli
    @gabibli Před 4 měsíci

    6:28

  • @Ruedge
    @Ruedge Před 4 měsíci

    Просто объяснить сложно. Сложно объяснить просто. Огромное спасибо за разбор темы!

  • @try_catch_error
    @try_catch_error Před 4 měsíci

    Мне кажется это какой - то роффл автора видео ) Я такую же задачку решал за O(n) амортизированое )

    • @unknownunknown-os4ue
      @unknownunknown-os4ue Před 4 měsíci

      наверно еще и порядок элементов не поменял в решении?)

  • @jahongir2212
    @jahongir2212 Před 4 měsíci

    Привет, спасибо за видео) А что с классом директор? Он же выполняет 2 функции? 2:47

    • @MagicSwift
      @MagicSwift Před 4 měsíci

      Да, функций может быть сколько угодно, но они все должны относиться только к обязанностям директора. Если бы он еще и занимался тренировкой людей в зале, то это было бы уже нарушение принципа

  • @alexey3337
    @alexey3337 Před 5 měsíci

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

  • @mrunicorn-p4x
    @mrunicorn-p4x Před 5 měsíci

    здесь все лучшее получается, даже если кто то не согласен. Спасибо автору за понятное обьяснение.

  • @mrunicorn-p4x
    @mrunicorn-p4x Před 5 měsíci

    ничего не было понятно, посмотрел видео и все понятно. Магия рассказчика сработала. Спасибо автору за огненный контент!

  • @esca7a
    @esca7a Před 5 měsíci

    Привет. Ты не раскрыл суть принципа. А именно такие вещи как: - аргументы метода дочернего класса не должны быть ковариантны по отношению к родительскому классу; - возвращаемые значения методов дочерних классов могут быть ковариантны; - свойства не должны быть переопределены И самое главное - какие проблемы несут выше сказанные ограничения ?

  • @egores9271
    @egores9271 Před 5 měsíci

    Отличный формат, очень хорошая подача информации! Спасибо за видео!

  • @one_madness4751
    @one_madness4751 Před 5 měsíci

    Спасибо))) четко, ясно и по делу

  • @artyom5602
    @artyom5602 Před 5 měsíci

    Жаль не успели рассказать про новый метод isappearing

  • @zgold3344
    @zgold3344 Před 5 měsíci

    Просто супер!

  • @user-ql7qr2op4v
    @user-ql7qr2op4v Před 5 měsíci

    Много пересмотрел на тему Swift, но это лучшее объяснение и подача материала

  • @boekhounding2586
    @boekhounding2586 Před 6 měsíci

    Автор, большая умница! Спасибо!

  • @sokolivan17
    @sokolivan17 Před 6 měsíci

    Есть же метод sceneDidEnterBackground(_:) в SceneDelegete. Почему у тебя его нет?))

  • @MarkizBoneco
    @MarkizBoneco Před 6 měsíci

    отличное объяснение. спасибо большое!

  • @user-hm7pt5uz4i
    @user-hm7pt5uz4i Před 7 měsíci

    Первый канал на котором мною будет оставлен комментарий. Обращение к автору - контент отличный. У канала большое будущее, не останавливайся, у тебя всё получится. Великолепная подача материала, довольно подробно и с примерами. Для меня является огромным плюсом, что присутствуют конкретные use-кейсы, а не просто сухая теория. Именно этого не хватает большинству прочих каналов, где после просмотра могут остаться вопросы, как и где применять полученные знания в реальных проектах. Даже будучи уже действующим разработчиком, переодически нахожу для себя что-то новое. Однозначно лайк, продолжай в том же духе! 💪

  • @YA_BEDA
    @YA_BEDA Před 7 měsíci

    Спасибо большое за прекрасное видео! Если в планах выпускать еще?)

  • @petrun
    @petrun Před 8 měsíci

    func foo(_ arr: [Int]) -> [Int] { var exists = Set<Int>() return arr.filter { exists.insert($0) == false } }

    • @reepka4871
      @reepka4871 Před 7 měsíci

      Во, прекрасное решение за O(N), пусть и с дополнительной памятью N 👍 Явно лучше, чем n^2

  • @siberian_arg
    @siberian_arg Před 8 měsíci

    Привет Спасибо за видео! ПОдскажи пожалуйста, не могу спокойно спать) почему при блокировке мы получаем следующую последовательность вызова функций? sceneWillResignActive(_:) INACTIVE - Уходит из режима переднего плана sceneDidBecomeActive(_:) FORGRAUND ACTIVE - Активное: становится приложением переднего плана sceneWillResignActive(_:) INACTIVE - Уходит из режима переднего плана sceneDidEnterBackground(_:) BACKGROUND ведь по логике должно просто быть: sceneWillResignActive(_:) INACTIVE - Уходит из режима переднего плана sceneDidEnterBackground(_:) BACKGROUND Буду очень признателен за ответ! А пока пытаюсь разобрать сам

    • @MagicSwift
      @MagicSwift Před 8 měsíci

      Привет, скорее всего это связано либо с внутренними особенностями системы, либо с багом эмулятора. Нужно проверить на реальном девайсе посмотреть какой результат будет там. Должно быть sceneWillResignActive -> sceneDidEnterBackground

    • @siberian_arg
      @siberian_arg Před 8 měsíci

      @@MagicSwift Принял, спасибо за быструю обратную связь! Пытаюсь запустить на телефоне, но появилась проблема) постараюсь добить и найти ответ)

    • @siberian_arg
      @siberian_arg Před 8 měsíci

      @@MagicSwift вот такая последовательност после блокировки на телефоне: sceneWillResignActive(_:)INACTIVE -> sceneDidEnterBackground(_:)BACKGROUND 🤝 Значит с симулятором приколы) все теперь душа спокойна с блокировкой. ✊ Но у меня почему то 3 минуты запускалось приложение( есть еще один момент, на девайсе стягиваю шторку и там sceneWillResignActive(_:)INACTIVE -> sceneDidBecomeActive(_:)FORGRAUND ACTIVE -> sceneWillResignActive(_:)INACTIVE проверил, мое мнение по поводу этого, думаю тут загвоздка в том, что при стягивании шторки, ее не возможно самостоятельно дотянуть прям до низа, чтобы занимала всю область экрана, и необходимо отпустить пальчик и он докатывает эту шторку до полного перекрытия сцены, и в момент, когда отпускаешь свайпание вниз, то на милисекнду он возвращает приложение в активное состояние и после того, как шторка уже заняла полный экран, тогда переходит снова в inactive Выслушал бы и другие предположения)

  • @user-iOSnick-dev
    @user-iOSnick-dev Před 8 měsíci

    Очередное спасибо!

  • @user-iOSnick-dev
    @user-iOSnick-dev Před 8 měsíci

    Большое спасибо за труд!!!

  • @dobrysiabar8791
    @dobrysiabar8791 Před 8 měsíci

    5:55 "в методе loadView корневая view равна nil и мы можем подменить её на нашу кастомную". А в каком моменте дефолтный view становится не nil, если ничего не подменять и ничего не трогать? В методе viewDidLoad? Ну если так, то какой смысл подменять на кастомную view, если она почти сразу же перезапишется на дефолтную view от apple, так как это заложено жизненным циклом? Зачем тогда что-то подменять? Ну либо подменять view нужно в методе viewDidLoad, а не loadView, как говорит автор? Тема не раскрыта целиком и собеседующий просто завалит наводящими вопросами. На собеседовании такие поверхностные ответы не прокатят

    • @dobrysiabar8791
      @dobrysiabar8791 Před 8 měsíci

      Разобрался самостоятельно. Если в методе loadView не вызвать super, то view не настроится и будет nil, а view controller будет метаться и вызывать метод loadView несколько раз. А если еще попытаться обратиться ко view, то программа начинает сходить с ума и вызывать метод loadView бесконечно. Поведение view controller'а очень странное если у view нет значения. Если не трогать свойство view, то view controller как-то умудряется жить и вызывать другие методы своего жизненного цикла. Но если хоть где-то дёрнуть свойство view, то это конец работе программы.

  • @dobrysiabar8791
    @dobrysiabar8791 Před 8 měsíci

    0:30 на картинке вообще 4 метода, а не 6

  • @user-iOSnick-dev
    @user-iOSnick-dev Před 8 měsíci

    Это лучшее объяснение данной темы! Спасибо за труд!

  • @DyoushaEpic
    @DyoushaEpic Před 8 měsíci

    Привет, ты классно объяснил тему, смотрел урок от swiftbook, там слишком нудно рассказывали . ЛАКЙ однозначно