Шаблоны проектирования простым языком. Порождающие шаблоны
Шаблоны проектирования — это руководства по решению повторяющихся проблем. Это не классы, пакеты или библиотеки, которые можно было бы подключить к вашему приложению и сидеть в ожидании чуда. Они скорее являются методиками, как решать определенные проблемы в определенных ситуациях.
Будьте осторожны
шаблоны проектирования не являются решением всех ваших проблем;
не пытайтесь использовать их в обязательном порядке — это может привести к негативным последствиям. Шаблоны — это подходы к решению проблем, а не решения для поиска проблем;
если их правильно использовать в нужных местах, то они могут стать спасением, а иначе могут привести к ужасному беспорядку.
https://tproger.ru/translations/design-patterns-simple-words-1/
Шаблоны проектирования — это руководства по решению повторяющихся проблем. Это не классы, пакеты или библиотеки, которые можно было бы подключить к вашему приложению и сидеть в ожидании чуда. Они скорее являются методиками, как решать определенные проблемы в определенных ситуациях.
Будьте осторожны
шаблоны проектирования не являются решением всех ваших проблем;
не пытайтесь использовать их в обязательном порядке — это может привести к негативным последствиям. Шаблоны — это подходы к решению проблем, а не решения для поиска проблем;
если их правильно использовать в нужных местах, то они могут стать спасением, а иначе могут привести к ужасному беспорядку.
https://tproger.ru/translations/design-patterns-simple-words-1/
Tproger
О порождающих шаблонах проектирования простым языком
Первая статья из цикла, посвящённого шаблонам, или паттернам, проектирования. На понятных примерах объясняем суть порождающих шаблонов.
🔥5❤1
Очень хороший материал с примерами на очень важную тему 🙃
Generics 👍🏻
Материал, конечно, больше для новичков, но от этого он менее хорошим не становится. А сами дженерики используются в куче языков, поэтому разобраться в них точно нужно всем! 🤓
https://www.avanderlee.com/swift/generics-constraints/
Generics 👍🏻
Материал, конечно, больше для новичков, но от этого он менее хорошим не становится. А сами дженерики используются в куче языков, поэтому разобраться в них точно нужно всем! 🤓
https://www.avanderlee.com/swift/generics-constraints/
SwiftLee
Generics in Swift explained with code examples
Generics in Swift prevent code duplication by allowing code to be reused. It's key to know when and how to use generics in your advantage.
👍8🔥2
Хранение и использование кастомных ресурсов (картинки, шрифты, цвета) сейчас есть, наверное, в каждом приложении. И часто в этом всём встречается псевдо-контролируемый хаос 🤯
Так вот, чтобы уйти от иллюзии контроля и действительно начать удобно работать с ресурсами, автор предлагает простой, удобный и type-safe подход 👍
Конечно речь идёт об Assets обвязанных enum-ами. Возможно, многие уже поняли, о чём речь, а может даже и используют так. Но в любом случае, вот статья с примерами удобного подхода к использованию ресурсов в вашем приложении 🔥
https://runhum.medium.com/type-safe-assets-in-swift-798cab38f221
Так вот, чтобы уйти от иллюзии контроля и действительно начать удобно работать с ресурсами, автор предлагает простой, удобный и type-safe подход 👍
Конечно речь идёт об Assets обвязанных enum-ами. Возможно, многие уже поняли, о чём речь, а может даже и используют так. Но в любом случае, вот статья с примерами удобного подхода к использованию ресурсов в вашем приложении 🔥
https://runhum.medium.com/type-safe-assets-in-swift-798cab38f221
Medium
Type-safe assets in Swift
Whenever you need to refer to resources in your apps, whether it be colors, fonts or images, you typically don’t want to use magic strings…
👍5
Swiftly — это универсальный справочник, быстрая шпаргалка для разработчиков Swift. Он содержит справочные примеры использования всех нужных операторов для разработчиков всех уровней.
https://swiftly.dev/
https://swiftly.dev/
🔥15
Как iOS 16 ускоряет запуск вашего приложения.
Эти улучшение связано с ускорением проверок протоколов, которые были медленными. Кроме того, в iOS 16 сокращается время загрузки двоичного файла за счет уменьшения объема данных, загружаемых с диска. Об этом вы также можете прочитать в предыдущей статье.
https://is.gd/CgCtJU
Эти улучшение связано с ускорением проверок протоколов, которые были медленными. Кроме того, в iOS 16 сокращается время загрузки двоичного файла за счет уменьшения объема данных, загружаемых с диска. Об этом вы также можете прочитать в предыдущей статье.
https://is.gd/CgCtJU
Emergetools
Emerge Tools Blog | The Surprising Cost of Protocol Conformances in Swift
A deep dive into the Swift runtime to see how protocol conformance checks slow down post-main startup time as your binary size increases.
🔥2
Решить, какую структуру данных использовать для представления заданного набора значений, часто бывает намного сложнее, чем кажется
Стандартная библиотека Swift поставляется с тремя основными структурами данных — Array, Dictionary и Set, каждая из которых имеет свой набор оптимизаций, плюсов и минусов.
Подробнее про типы коллекций, можно озанакомиться в данной статье.
https://habr.com/ru/company/otus/blog/468239/
Стандартная библиотека Swift поставляется с тремя основными структурами данных — Array, Dictionary и Set, каждая из которых имеет свой набор оптимизаций, плюсов и минусов.
Подробнее про типы коллекций, можно озанакомиться в данной статье.
https://habr.com/ru/company/otus/blog/468239/
Хабр
Выбираем правильную структуру данных в Swift
И снова здравствуйте. Прежде чем уйти на выходные хотим поделиться с вами переводом материала, который был подготовлен специально для базового курса «iOS-разрабо...
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
🛠Одним из не то, чтобы новых, но незаменимых классов в UIKit является
Если вы не знаете, что такое bottom sheet, откройте встроенное приложение «Карты», чтобы посмотреть. На нем отображается bottom sheet, на котором пользователи могут выполнять поиск и получать доступ к сохраненным местоположениям. Вы можете развернуть и свернуть его. Также этот тип шаблона пользовательского интерфейса можно найти в некоторых популярных приложениях, таких как Google Maps, Twitter и Instagram.
🔴 Теперь к коду.
Вы можете указать размер контроллера, установив свойство
UISheetPresentationController
. Этот класс позволяет легко создать раскрываемый bottom sheet всего с несколькими строками кода.Если вы не знаете, что такое bottom sheet, откройте встроенное приложение «Карты», чтобы посмотреть. На нем отображается bottom sheet, на котором пользователи могут выполнять поиск и получать доступ к сохраненным местоположениям. Вы можете развернуть и свернуть его. Также этот тип шаблона пользовательского интерфейса можно найти в некоторых популярных приложениях, таких как Google Maps, Twitter и Instagram.
🔴 Теперь к коду.
Вы можете указать размер контроллера, установив свойство
detents
. Вот пример, показывающий, как установить размер bottom sheet:let webViewController = WebViewController()
if let sheet = webViewController.sheetPresentationController {
sheet.detents = [ .medium(), .large() ]
}
present(webViewController, animated: true)
👍13
Руководство по современному асинхронному программированию
https://quickbirdstudios.com/blog/async-await-combine-closures/
https://quickbirdstudios.com/blog/async-await-combine-closures/
QuickBird Studios
Combine, Closures: A Guide to Modern Asynchronous Swift
A comparison between async/await, Combine, and closures in Swift. Includes an overview of the strengths and weaknesses of the different approaches.
🔥5
Коротенькая, но очень полезная статья с парой фишек для дебага в Xcode 🔨
Тут есть и совсем простые вещи вроде
В общем переходите по ссылке и смотрите. Всего несколько минут, зато что-то полезное можно узнать! 👍
https://medium.com/@dbelannab/xcode-debugging-tips-and-tricks-c2f4db49553e
Тут есть и совсем простые вещи вроде
po
команды в логе (я удивлён, но очень многие об этом почему-то не знают) и symbolic breakpoint
, до более интересных и менее популярных вещей из разряда команды v
для того же lldb
и изменений при дебаге без необходимости пересобирать проект 🔥В общем переходите по ссылке и смотрите. Всего несколько минут, зато что-то полезное можно узнать! 👍
https://medium.com/@dbelannab/xcode-debugging-tips-and-tricks-c2f4db49553e
Medium
Xcode Debugging tips and tricks
As a lazy software engineer, I always look for shortcuts to complete my tasks. And since we spend half of our times debugging let me share…
👍5🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Кастомный TabBar
Статья состоит из трёх частей, как реализовать вот такой таббар.
https://betterprogramming.pub/how-to-create-a-nice-uitabbar-for-your-ios-app-using-swift-5-pt-1-f9d2d5450909
Статья состоит из трёх частей, как реализовать вот такой таббар.
https://betterprogramming.pub/how-to-create-a-nice-uitabbar-for-your-ios-app-using-swift-5-pt-1-f9d2d5450909
🎉4❤2
Про базовые знаниям в Swift, сложно не вспомнить про классы и структуры
Об этом часто спрашивают на собеседованиях и обычно не ограничиваются одним-двумя вопросами.
Давайте разбираться!
https://medium.com/hash-coding/swift-structures-and-classes-part-1-582e26bdf8dd
Об этом часто спрашивают на собеседованиях и обычно не ограничиваются одним-двумя вопросами.
Давайте разбираться!
Structs
vs Classes
https://medium.com/hash-coding/swift-structures-and-classes-part-1-582e26bdf8dd
Medium
Swift — Structures and Classes — Part 1
This forms a very common question for almost all the iOS interviews. This is because it plays a significant role in choosing the right…
❤7
Ох, что-то интересное про коллекцию, верстку. Очень годная статья, летс го
https://habr.com/ru/post/495076/
https://habr.com/ru/post/495076/
Хабр
Compositional Layout в iOS 13. Основы
Добрый день, На практике iOS разработчик часто сталкивается с задачей показа большого количества информации в виде списка или в виде коллекции, как правило, для этого отлично подходят UITableView или...
🔥7👎1
Статические свойства и методы
Кроме свойств, которые относятся к отдельным экземплярам класса, мы можем определять свойства, которые относятся ко всему типу - свойства типа. Для объявления статических методов и свойств типа используется ключевое слово static. Доступ к ним осуществляется из самого типа, а не из экземпляра.
Кроме свойств, которые относятся к отдельным экземплярам класса, мы можем определять свойства, которые относятся ко всему типу - свойства типа. Для объявления статических методов и свойств типа используется ключевое слово static. Доступ к ним осуществляется из самого типа, а не из экземпляра.
👍9
Работа с навигацией, координатором, передачей данных. Крутая статья с примерами кода
https://www.hackingwithswift.com/articles/175/advanced-coordinator-pattern-tutorial-ios
https://www.hackingwithswift.com/articles/175/advanced-coordinator-pattern-tutorial-ios
Hacking with Swift
Advanced coordinators in iOS
Child coordinators, navigating backwards, passing data between view controllers, and more.
👍5
Большая и оочень хорошая статья о работе с кастомными шрифтами в iOS
И примеры кода, и результата, и объяснение, как это всё работает, скрины с
Статья в первую очередь про поддержку
https://medium.com/@hdmdhr/use-dynamic-type-with-custom-fonts-in-ios-480d9c902689
И примеры кода, и результата, и объяснение, как это всё работает, скрины с
debug view hierarchy
и всё всё всё, что нужно знать 🔥Статья в первую очередь про поддержку
dynamic type
- это когда в настройках размер шрифта на уровне всей системы меняют. Но полезно будет всем, кто использует кастомные шрифты https://medium.com/@hdmdhr/use-dynamic-type-with-custom-fonts-in-ios-480d9c902689
Medium
Use Dynamic Type with Custom Fonts in iOS
Use a enum to manage custom fonts, and simplify the usage.
🤯3❤1
Понимаем архитектуру VIPER
VIPER — это архитектура. Она снижает сложность, особенно в больших проектах. Целью архитектуры является разделение операционного кода внутри проекта, модулеризация и регуляризация. В основном она использует протоколы, поскольку межуровневая связь в шаблоне VIPER обеспечивается протоколами.
https://apptractor.ru/develop/ponimaem-arhitekturu-viper.html
VIPER — это архитектура. Она снижает сложность, особенно в больших проектах. Целью архитектуры является разделение операционного кода внутри проекта, модулеризация и регуляризация. В основном она использует протоколы, поскольку межуровневая связь в шаблоне VIPER обеспечивается протоколами.
https://apptractor.ru/develop/ponimaem-arhitekturu-viper.html
AppTractor
Понимаем архитектуру VIPER
Существует множество шаблонов проектирования, таких как MVI, MVP, MVVM и т.д. Все они имеют свои преимущества и недостатки. В зависимости от размера вашего проекта, вы можете выбрать тот или другой. В этой статье я попытаюсь на примере объяснить шаблон проектирования…
🔥7❤2
URLSession
- вещь, которую все используют в своих приложениях, но мало кто глубоко копался, что там можно настроить и для чего.URLSessionConfiguration
https://www.avanderlee.com/swift/urlsessionconfiguration/
SwiftLee
URLSessionConfiguration: Exploring opt-in configurations
URLSession uses a default URLSessionConfiguration for common use cases, but there's room to maximize network performance by opt-in settings.
🔥11