- 15
- 61 919
Swift Magic
Registrace 23. 12. 2018
Записываю видео об iOS разработке
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. Разобрана тема объектно-ориентированного программирования: наследование, инкапсуляция, полиморфизм
Спасибо, очень полезно.
Вопрос: почему при получении оранжевой вьюхи по результатам hitTest() и назначении ее firstResponder’ом далее у нас в консоли выводится весь responder chain, хотя оранжевая вьюха может обработать тач? По идее мы не должны дальше идти же по цепочке? Возможно, ответ таков (взято из одной статьи): «UIGestureRecognizer реализует четыре метода касания, но он не является респондером. Поэтому не участвует в responder chain.» Но тогда почему не вызываются рекогнайзеры на каждой вью в responder chain, а только на оранжевой? 🤔
10:20. Если вьюшка не полностью обработала событие, она передает его на уровень выше. В нашем случае, когда мы определили, что нажали именно на нее, в консоле вывелась информация об этом и затем вызвался метод super.touchesBegan, который и передал событие рекурсивно к ViewController
@@MagicSwiftммм, тогда вопрос другой: что значит полностью обработает событие? Какие критерии того, что является «полностью», а что - нет?
Ваши видео очень крутые Жаль, что так мало
Отличное объяснение! Смотрел много видео про SOLID, но только благодаря вашим примерам понял, как все принципы применять на практике. Пишу на TypeScript, не возникло трудностей в понимании Swift-кода :) Спасибо вам!!!
Спасибо!
ооочень полезное видео, однозначно лайк!
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() } }
Замечательно! Инфу про СРU и GPU встретил впервые, козырну на собесе, если спросят)
Не канал, а каналище. Автор оч хорош в подаче материала
спасибо, было полезно!
Не пойму,почему при повороте frame(h и w) изменились и зачем рисовать вторую view? Почему не можем длину и ширины frame посчитать по повернутому прямоугольнику?
спасибо)
тема не раскрита. 1) когдато помню просто вешаеш дополнительний рекогнайзер тапа большего размери и все. 2) что ето за овверрайд objc функций в вью контролерре, тоесть сначало оно дошло до серой вьюхи потом нашло оранживою? ниче не понял, ето же должно бить если не можеш обробить. 3) что значит вьюха не может обробить тач? у нее нет соотвественного делегат метода?
Пожалуйста, выучи русский язык 🙏
Всё топ
А что происходит с приложением когда запускается реклама ?
Смотря какая реклама, но обычно она встроена в само приложение и до тех пор, пока не произошёл переход в браузер, приложение остаётся активным и не переходит в другие состояния
Спасибо
Спасибо! перед собесами, освежить знания самое то)
Спасибо большое!!!
Прикольно)
Спасибо за информативные видео
Половина людей зашла сюда про 3д моделирование смотреть
Крутейший видос по теме! Спасибо за такое качественное объяснение)
Супер! Спасибо
Божественно
6:28
Просто объяснить сложно. Сложно объяснить просто. Огромное спасибо за разбор темы!
Мне кажется это какой - то роффл автора видео ) Я такую же задачку решал за O(n) амортизированое )
наверно еще и порядок элементов не поменял в решении?)
Привет, спасибо за видео) А что с классом директор? Он же выполняет 2 функции? 2:47
Да, функций может быть сколько угодно, но они все должны относиться только к обязанностям директора. Если бы он еще и занимался тренировкой людей в зале, то это было бы уже нарушение принципа
абстрактный класс это базовый класс от которого мы наследуем другие классы ? Протоколы можно расширять это добавит дефолтную реализацию в те классы которые на них подписываются, не очень понятна тогда разница с абстрактным классом.
здесь все лучшее получается, даже если кто то не согласен. Спасибо автору за понятное обьяснение.
ничего не было понятно, посмотрел видео и все понятно. Магия рассказчика сработала. Спасибо автору за огненный контент!
Привет. Ты не раскрыл суть принципа. А именно такие вещи как: - аргументы метода дочернего класса не должны быть ковариантны по отношению к родительскому классу; - возвращаемые значения методов дочерних классов могут быть ковариантны; - свойства не должны быть переопределены И самое главное - какие проблемы несут выше сказанные ограничения ?
Отличный формат, очень хорошая подача информации! Спасибо за видео!
Спасибо))) четко, ясно и по делу
Жаль не успели рассказать про новый метод isappearing
Просто супер!
Много пересмотрел на тему Swift, но это лучшее объяснение и подача материала
Автор, большая умница! Спасибо!
Есть же метод sceneDidEnterBackground(_:) в SceneDelegete. Почему у тебя его нет?))
отличное объяснение. спасибо большое!
Первый канал на котором мною будет оставлен комментарий. Обращение к автору - контент отличный. У канала большое будущее, не останавливайся, у тебя всё получится. Великолепная подача материала, довольно подробно и с примерами. Для меня является огромным плюсом, что присутствуют конкретные use-кейсы, а не просто сухая теория. Именно этого не хватает большинству прочих каналов, где после просмотра могут остаться вопросы, как и где применять полученные знания в реальных проектах. Даже будучи уже действующим разработчиком, переодически нахожу для себя что-то новое. Однозначно лайк, продолжай в том же духе! 💪
Спасибо!
Спасибо большое за прекрасное видео! Если в планах выпускать еще?)
func foo(_ arr: [Int]) -> [Int] { var exists = Set<Int>() return arr.filter { exists.insert($0) == false } }
Во, прекрасное решение за O(N), пусть и с дополнительной памятью N 👍 Явно лучше, чем n^2
Привет Спасибо за видео! ПОдскажи пожалуйста, не могу спокойно спать) почему при блокировке мы получаем следующую последовательность вызова функций? sceneWillResignActive(_:) INACTIVE - Уходит из режима переднего плана sceneDidBecomeActive(_:) FORGRAUND ACTIVE - Активное: становится приложением переднего плана sceneWillResignActive(_:) INACTIVE - Уходит из режима переднего плана sceneDidEnterBackground(_:) BACKGROUND ведь по логике должно просто быть: sceneWillResignActive(_:) INACTIVE - Уходит из режима переднего плана sceneDidEnterBackground(_:) BACKGROUND Буду очень признателен за ответ! А пока пытаюсь разобрать сам
Привет, скорее всего это связано либо с внутренними особенностями системы, либо с багом эмулятора. Нужно проверить на реальном девайсе посмотреть какой результат будет там. Должно быть sceneWillResignActive -> sceneDidEnterBackground
@@MagicSwift Принял, спасибо за быструю обратную связь! Пытаюсь запустить на телефоне, но появилась проблема) постараюсь добить и найти ответ)
@@MagicSwift вот такая последовательност после блокировки на телефоне: sceneWillResignActive(_:)INACTIVE -> sceneDidEnterBackground(_:)BACKGROUND 🤝 Значит с симулятором приколы) все теперь душа спокойна с блокировкой. ✊ Но у меня почему то 3 минуты запускалось приложение( есть еще один момент, на девайсе стягиваю шторку и там sceneWillResignActive(_:)INACTIVE -> sceneDidBecomeActive(_:)FORGRAUND ACTIVE -> sceneWillResignActive(_:)INACTIVE проверил, мое мнение по поводу этого, думаю тут загвоздка в том, что при стягивании шторки, ее не возможно самостоятельно дотянуть прям до низа, чтобы занимала всю область экрана, и необходимо отпустить пальчик и он докатывает эту шторку до полного перекрытия сцены, и в момент, когда отпускаешь свайпание вниз, то на милисекнду он возвращает приложение в активное состояние и после того, как шторка уже заняла полный экран, тогда переходит снова в inactive Выслушал бы и другие предположения)
Очередное спасибо!
Большое спасибо за труд!!!
5:55 "в методе loadView корневая view равна nil и мы можем подменить её на нашу кастомную". А в каком моменте дефолтный view становится не nil, если ничего не подменять и ничего не трогать? В методе viewDidLoad? Ну если так, то какой смысл подменять на кастомную view, если она почти сразу же перезапишется на дефолтную view от apple, так как это заложено жизненным циклом? Зачем тогда что-то подменять? Ну либо подменять view нужно в методе viewDidLoad, а не loadView, как говорит автор? Тема не раскрыта целиком и собеседующий просто завалит наводящими вопросами. На собеседовании такие поверхностные ответы не прокатят
Разобрался самостоятельно. Если в методе loadView не вызвать super, то view не настроится и будет nil, а view controller будет метаться и вызывать метод loadView несколько раз. А если еще попытаться обратиться ко view, то программа начинает сходить с ума и вызывать метод loadView бесконечно. Поведение view controller'а очень странное если у view нет значения. Если не трогать свойство view, то view controller как-то умудряется жить и вызывать другие методы своего жизненного цикла. Но если хоть где-то дёрнуть свойство view, то это конец работе программы.
0:30 на картинке вообще 4 метода, а не 6
Это лучшее объяснение данной темы! Спасибо за труд!
Привет, ты классно объяснил тему, смотрел урок от swiftbook, там слишком нудно рассказывали . ЛАКЙ однозначно