Немного о перечислениях в Swift
Не секрет, что на сегодняшний день Swift обладает одними из самых (возможно самыми) функциональными и гибкими в настройке перечислениями. Каждый Swift-разработчик может подтвердить, что работать с ними довольно приятно и удобно. Однако, мало кто задумывается как это устроено внутри.
Из коробки нам доступен сразу весь спектр решений знакомых программистам, от классических С-подобных, до "современных" перечислений, с уникальными ассоциативными значениями для каждого варианта. Помимо этого, в любом перечислении можно объявить дополнительные вычисляемые свойства.
Может показаться, что за подобную функциональность обязательно придётся заплатить либо производительностью, либо памятью. На самом деле, чтобы максимально избежать подобных издержек, под капотом в языке имеется шесть разных реализаций перечислений. Решение о том какую из них использовать, принимается автоматически во время компиляции на этапе формирования промежуточного представления кода для llvm, ну и иногда в рантайме. Таким образом, вы можете быть уверены в том, что при использовании классических С-подобных перечислений, компилятор не потащит вместе с ними весь скрытый багаж функциональности для работы с ассоциативными значениями, и наоборот, если вы работаете с перечислениями с ассоциативными значениями, то там уж всё будет оптимизировано как надо.
В данной статье рассматривается как осуществляется работа с памятью в основных реализациях перечислений и к каким приёмам прибегает компилятор для её оптимизации. Как принято, начнём с простого
#digest #enum #перечисления
Не секрет, что на сегодняшний день Swift обладает одними из самых (возможно самыми) функциональными и гибкими в настройке перечислениями. Каждый Swift-разработчик может подтвердить, что работать с ними довольно приятно и удобно. Однако, мало кто задумывается как это устроено внутри.
Из коробки нам доступен сразу весь спектр решений знакомых программистам, от классических С-подобных, до "современных" перечислений, с уникальными ассоциативными значениями для каждого варианта. Помимо этого, в любом перечислении можно объявить дополнительные вычисляемые свойства.
Может показаться, что за подобную функциональность обязательно придётся заплатить либо производительностью, либо памятью. На самом деле, чтобы максимально избежать подобных издержек, под капотом в языке имеется шесть разных реализаций перечислений. Решение о том какую из них использовать, принимается автоматически во время компиляции на этапе формирования промежуточного представления кода для llvm, ну и иногда в рантайме. Таким образом, вы можете быть уверены в том, что при использовании классических С-подобных перечислений, компилятор не потащит вместе с ними весь скрытый багаж функциональности для работы с ассоциативными значениями, и наоборот, если вы работаете с перечислениями с ассоциативными значениями, то там уж всё будет оптимизировано как надо.
В данной статье рассматривается как осуществляется работа с памятью в основных реализациях перечислений и к каким приёмам прибегает компилятор для её оптимизации. Как принято, начнём с простого
#digest #enum #перечисления
👍13❤3🔥3👎1
Как использовать UIContentUnavailableConfiguration для управления пустыми состояниям
В этом году на WWDC Apple удивила разработчиков неожиданным улучшением UIKit. Представление UIContentUnavailableConfiguration было направлено на упрощение процесса создания пустых состояний для контроллеров представления.
По словам Apple, UIContentUnavailableConfiguration представляет собой composable описание пустого состояния и может быть снабжено содержимым-заполнителем, например, изображением или текстом.
Существует 4 способа создания UIContentUnavailableConfiguration:
1. Создание с нуля
2. Использование предопределенной конфигурации загрузки
3. Использование предопределенной конфигурации поиска
4. Использование конфигурации UIHostingConfiguration
В статье есть пример кода, а так же реализация на swiftUI. Единственная проблема, которую я вижу, это использование UIContentUnavailableConfiguration с 17 оси😥
#digest #состояние_экранов
В этом году на WWDC Apple удивила разработчиков неожиданным улучшением UIKit. Представление UIContentUnavailableConfiguration было направлено на упрощение процесса создания пустых состояний для контроллеров представления.
По словам Apple, UIContentUnavailableConfiguration представляет собой composable описание пустого состояния и может быть снабжено содержимым-заполнителем, например, изображением или текстом.
Существует 4 способа создания UIContentUnavailableConfiguration:
1. Создание с нуля
2. Использование предопределенной конфигурации загрузки
3. Использование предопределенной конфигурации поиска
4. Использование конфигурации UIHostingConfiguration
В статье есть пример кода, а так же реализация на swiftUI. Единственная проблема, которую я вижу, это использование UIContentUnavailableConfiguration с 17 оси😥
#digest #состояние_экранов
🔥6❤4👍3👎2
HTTP/HTTPS Протоколы
Мы подготовили для Вас доклад по данной теме, в которой раскрываем концепцию данных протоколов, их применение в реальной жизни. Так же в докладе мы затронем создание необходимого реквеста, чтобы сформировать наше общение с сервером, расскажем про статус коды и как отслеживать методы.
Что такое HTTP?
HTTP – широко распространённый протокол передачи данных, изначально предназначенный для гипертекстовых документов, то есть документов, которые могут содержать ссылки, позволяющие организовать переход к другим документам.
Что такое HTTPS?
HTTPS (Hypertext Transport Protocol Secure) – это протокол, который обеспечивает конфиденциальность обмена данными между сайтом и пользовательским устройством. Безопасность информации обеспечивается за счет использования криптографических протоколов SSL/TLS, имеющих 3 уровня защиты:
Шифрование данных позволяет избежать их перехвата;
Сохранность данных – любое изменение данных фиксируется;
Аутентификация защищает от перенаправления пользователя
#digest #HTTP #HTTPS #доклад
Мы подготовили для Вас доклад по данной теме, в которой раскрываем концепцию данных протоколов, их применение в реальной жизни. Так же в докладе мы затронем создание необходимого реквеста, чтобы сформировать наше общение с сервером, расскажем про статус коды и как отслеживать методы.
Что такое HTTP?
HTTP – широко распространённый протокол передачи данных, изначально предназначенный для гипертекстовых документов, то есть документов, которые могут содержать ссылки, позволяющие организовать переход к другим документам.
Что такое HTTPS?
HTTPS (Hypertext Transport Protocol Secure) – это протокол, который обеспечивает конфиденциальность обмена данными между сайтом и пользовательским устройством. Безопасность информации обеспечивается за счет использования криптографических протоколов SSL/TLS, имеющих 3 уровня защиты:
Шифрование данных позволяет избежать их перехвата;
Сохранность данных – любое изменение данных фиксируется;
Аутентификация защищает от перенаправления пользователя
#digest #HTTP #HTTPS #доклад
🔥10⚡3👍3👎2❤1😁1
Popuv View - библиотека тостов, оповещений и всплывающих окон для SwiftUI
Popup View - это библиотека для создания всплывающих уведомлений (тостов) на SwiftUI. Она предоставляет различные компоненты и функции, которые позволяют легко создавать и настраивать всплывающие уведомления в пользовательском интерфейсе SwiftUI.
С использованием Popup View, вы можете создавать тосты с различными стилями, анимациями и настройками. Вы можете установить текст, цвет фона, иконку и другие параметры для каждого всплывающего уведомления. Библиотека также предоставляет возможность управлять временем отображения и поведением тостов, такими как автоматическое исчезновение после определенного времени или ручное закрытие пользователем.
Эта библиотека облегчает создание и управление всплывающими уведомлениями в SwiftUI, что позволяет вам легко добавлять информационные сообщения, предупреждения или уведомления в вашем приложении.
#digest #библиотека #swiftUI
Popup View - это библиотека для создания всплывающих уведомлений (тостов) на SwiftUI. Она предоставляет различные компоненты и функции, которые позволяют легко создавать и настраивать всплывающие уведомления в пользовательском интерфейсе SwiftUI.
С использованием Popup View, вы можете создавать тосты с различными стилями, анимациями и настройками. Вы можете установить текст, цвет фона, иконку и другие параметры для каждого всплывающего уведомления. Библиотека также предоставляет возможность управлять временем отображения и поведением тостов, такими как автоматическое исчезновение после определенного времени или ручное закрытие пользователем.
Эта библиотека облегчает создание и управление всплывающими уведомлениями в SwiftUI, что позволяет вам легко добавлять информационные сообщения, предупреждения или уведомления в вашем приложении.
#digest #библиотека #swiftUI
👍5🔥4💩2💯1
Поиск retain cycle с помощью инструментов Xcode
При разработке под iOS многие разработчики часто сталкиваются c retain cycle, когда как минимум 2 объекта удерживают строгие ссылки друг на друга. Самый простой кейс — когда разработчик просто забыл сделать weak у delegate (да, такое бывает) или вызвал self в escaping замыкании дочернего объекта.
В реальном большом проекте очень тяжело отыскать, кто держит сильную ссылку друг на друга, причем это могут быть не 2 объекта.
Один из способов решение данной проблемы является - Debug Memory Graph
Debug Memory Graph, как и любой инструмент, имеет ошибки.
Как пользоваться можно увидеть в данной статье, и так же советую посмотреть видео про откладку в ios следующее видео
При разработке под iOS многие разработчики часто сталкиваются c retain cycle, когда как минимум 2 объекта удерживают строгие ссылки друг на друга. Самый простой кейс — когда разработчик просто забыл сделать weak у delegate (да, такое бывает) или вызвал self в escaping замыкании дочернего объекта.
В реальном большом проекте очень тяжело отыскать, кто держит сильную ссылку друг на друга, причем это могут быть не 2 объекта.
Один из способов решение данной проблемы является - Debug Memory Graph
Debug Memory Graph, как и любой инструмент, имеет ошибки.
Как пользоваться можно увидеть в данной статье, и так же советую посмотреть видео про откладку в ios следующее видео
👍11🔥4👎2❤1
Xcode 11 и XCFrameworks: новый формат упаковки фреймворков
XCFrameworks - технология Apple которая была добавлена в 2019 году. Она позволяет создавать и использовать переносимые библиотеки, которые могут быть использованы на разных платформах Apple.
По сути это формат бандлов, которые запоковываются в фрейморки для целевых платформ.
XCFramework имеет несколько преимуществ, в сравнении с устоявшимися подходами:
- Упаковка зависимостей под все целевые платформы и архитектуры в единый bundle из коробки.
- Подключение bundle в формате XCFramework, как единой зависимости для всех целевых платформ и архитектур.
- Отсутствие необходимости в сборке fat/universal фреймворка.
- Нет необходимости избавляться от x86_64 слайсов (slice) перед загрузкой конечных приложений в AppStore.
Более подробно про данную технологию, советую прочитать статью на хабре, где подробно и понятно рассказывают о XCFrameworks.
#digest #полезное
XCFrameworks - технология Apple которая была добавлена в 2019 году. Она позволяет создавать и использовать переносимые библиотеки, которые могут быть использованы на разных платформах Apple.
По сути это формат бандлов, которые запоковываются в фрейморки для целевых платформ.
XCFramework имеет несколько преимуществ, в сравнении с устоявшимися подходами:
- Упаковка зависимостей под все целевые платформы и архитектуры в единый bundle из коробки.
- Подключение bundle в формате XCFramework, как единой зависимости для всех целевых платформ и архитектур.
- Отсутствие необходимости в сборке fat/universal фреймворка.
- Нет необходимости избавляться от x86_64 слайсов (slice) перед загрузкой конечных приложений в AppStore.
Более подробно про данную технологию, советую прочитать статью на хабре, где подробно и понятно рассказывают о XCFrameworks.
#digest #полезное
👍5🔥2👎1👏1
Статические и динамические библиотеки/фреймворки в iOS
При разработке приложений на любой платформе (в том числе и iOS) мы сталкиваемся с тем, что нам приходится использовать сторонний код или упаковывать свой собственный код, чтобы потом его переиспользовать.
В случае статических библиотек (*.a) код, используемый приложением, копируется в исполняемый файл во время компиляции. То есть после компиляции исполняемый файл не нуждается в поддержке внешним кодом или бинарниками, т.к все используемые функции уже находятся в нем. Конечно это будет и минусом статической библиотеки, ведь если кодовая база изменится, то для работаспособности исполняемого файла его придется заново перекомпилировать.
Динамические библиотеки (.dylib) же отличаются от статических тем, что они "линкуются" с исполняемым бинарником, т.е код нашей библиотеки не попадает в исполняемый файл, а подгружается во время выполнения. В результате размер исполняемого бинарника меньше, а так как код загружается только в момент обращения к нему, то время запуска обычно уменьшается; но если все динамические библиотеки загружаются при запуске приложения то это может сильно повлиять на время запуска приложения.
При попытке отправить ресурсы (такие как строковые файлы, изображения и т. д.) библиотеки iOS/macOS доставляются вместе с пакетами (Bundle's), содержащими эти ресурсы.
Другими словами основное отличие iOS от остальных платформ, так это то, что разработчик не может установить свои динамические модули в общем месте и использовать их из разных приложений. Это связано с тем, что приложения работают как бы в «песочнице» и не могут устанавливать модули в другие части системы. Получается если несколько разных приложений на телефоне используют один и тот же фреймворк, все равно на устройстве будет несколько его копий, загруженных, упакованных и подписанных по отдельности.
#digest
При разработке приложений на любой платформе (в том числе и iOS) мы сталкиваемся с тем, что нам приходится использовать сторонний код или упаковывать свой собственный код, чтобы потом его переиспользовать.
В случае статических библиотек (*.a) код, используемый приложением, копируется в исполняемый файл во время компиляции. То есть после компиляции исполняемый файл не нуждается в поддержке внешним кодом или бинарниками, т.к все используемые функции уже находятся в нем. Конечно это будет и минусом статической библиотеки, ведь если кодовая база изменится, то для работаспособности исполняемого файла его придется заново перекомпилировать.
Динамические библиотеки (.dylib) же отличаются от статических тем, что они "линкуются" с исполняемым бинарником, т.е код нашей библиотеки не попадает в исполняемый файл, а подгружается во время выполнения. В результате размер исполняемого бинарника меньше, а так как код загружается только в момент обращения к нему, то время запуска обычно уменьшается; но если все динамические библиотеки загружаются при запуске приложения то это может сильно повлиять на время запуска приложения.
При попытке отправить ресурсы (такие как строковые файлы, изображения и т. д.) библиотеки iOS/macOS доставляются вместе с пакетами (Bundle's), содержащими эти ресурсы.
Другими словами основное отличие iOS от остальных платформ, так это то, что разработчик не может установить свои динамические модули в общем месте и использовать их из разных приложений. Это связано с тем, что приложения работают как бы в «песочнице» и не могут устанавливать модули в другие части системы. Получается если несколько разных приложений на телефоне используют один и тот же фреймворк, все равно на устройстве будет несколько его копий, загруженных, упакованных и подписанных по отдельности.
#digest
👍15❤2🔥2👎1
Полезные iOS-инструменты для дебаггинга
Существует множество инструментов, которые помогут быстро и эффективно диагностировать, а также устранять проблемы. В этой статье подробно рассматриваются нативные и сторонние инструменты, доступные для отладки iOS-приложений, как использовать эти инструменты для диагностики и устранения распространенных проблем. Со всеми инструментами по отлавливанию ошибок советую разобраться в данной статье.
#digest #дебаггинг
Существует множество инструментов, которые помогут быстро и эффективно диагностировать, а также устранять проблемы. В этой статье подробно рассматриваются нативные и сторонние инструменты, доступные для отладки iOS-приложений, как использовать эти инструменты для диагностики и устранения распространенных проблем. Со всеми инструментами по отлавливанию ошибок советую разобраться в данной статье.
#digest #дебаггинг
👍7🔥2❤1👎1
XCFramework - это новый формат фреймворков, представленный Apple в Xcode 11.0.
Он представляет собой архив, который содержит скомпилированный код и ресурсы для разных платформ (например, iOS, macOS, tvOS и т. д.). XCFramework позволяет упаковывать код и ресурсы в единый файл, который может быть использован на разных платформах без необходимости создания отдельных фреймворков для каждой платформы.
Основная цель XCFramework - облегчить распространение и использование фреймворков для разработчиков, которые создают приложения для разных платформ Apple. Ранее, для каждой платформы требовалось создавать отдельный фреймворк, что могло быть неудобно и затратно по времени. XCFramework позволяет объединить код и ресурсы для всех платформ в один файл, что упрощает его использование и распространение.
Преимущества использования XCFramework включают:
1. Упрощение процесса сборки и распространения: XCFramework позволяет упаковать код и ресурсы для разных платформ в один файл, что упрощает процесс создания и распространения фреймворков.
2. Удобство использования: Разработчики могут использовать XCFramework на разных платформах без необходимости создания и подключения отдельных фреймворков для каждой платформы. Это делает процесс разработки и поддержки приложений для разных платформ более эффективным.
3. Поддержка динамических и статических библиотек: XCFramework поддерживает как динамические, так и статические библиотеки. Это позволяет разработчикам выбирать наиболее подходящий тип библиотеки для своих потребностей.
4. Поддержка биткода: XCFramework поддерживает биткод, что позволяет оптимизировать код при сборке и автоматически адаптироваться к разным платформам.
В целом, XCFramework является удобным и эффективным инструментом для разработчиков, позволяющим упростить создание, распространение и использование фреймворков на разных платформах Apple.
iOS Такой подготовил для вас маленький выпуск о том, как внедрить XCFrameworks к себе в проект.
#digest #доклад
Он представляет собой архив, который содержит скомпилированный код и ресурсы для разных платформ (например, iOS, macOS, tvOS и т. д.). XCFramework позволяет упаковывать код и ресурсы в единый файл, который может быть использован на разных платформах без необходимости создания отдельных фреймворков для каждой платформы.
Основная цель XCFramework - облегчить распространение и использование фреймворков для разработчиков, которые создают приложения для разных платформ Apple. Ранее, для каждой платформы требовалось создавать отдельный фреймворк, что могло быть неудобно и затратно по времени. XCFramework позволяет объединить код и ресурсы для всех платформ в один файл, что упрощает его использование и распространение.
Преимущества использования XCFramework включают:
1. Упрощение процесса сборки и распространения: XCFramework позволяет упаковать код и ресурсы для разных платформ в один файл, что упрощает процесс создания и распространения фреймворков.
2. Удобство использования: Разработчики могут использовать XCFramework на разных платформах без необходимости создания и подключения отдельных фреймворков для каждой платформы. Это делает процесс разработки и поддержки приложений для разных платформ более эффективным.
3. Поддержка динамических и статических библиотек: XCFramework поддерживает как динамические, так и статические библиотеки. Это позволяет разработчикам выбирать наиболее подходящий тип библиотеки для своих потребностей.
4. Поддержка биткода: XCFramework поддерживает биткод, что позволяет оптимизировать код при сборке и автоматически адаптироваться к разным платформам.
В целом, XCFramework является удобным и эффективным инструментом для разработчиков, позволяющим упростить создание, распространение и использование фреймворков на разных платформах Apple.
iOS Такой подготовил для вас маленький выпуск о том, как внедрить XCFrameworks к себе в проект.
#digest #доклад
👍9🔥5❤4👎1
Что нового в SwiftUI для iOS 17?
SwiftUI продолжает быстро развиваться, и в этом году мы видим огромное количество улучшений в прокрутке, интересные новые эффекты SF Symbols, продвинутую поддержку шейдеров Metal и многое другое.
Некоторые обновления в этом релизе из числа тех, которые автор предлагал лично. Среди них - добавление шейдеров Metal, улучшение работы Color с Codable, добавление замыкания по завершении для анимаций, которое дает нам возможность анимировать градиенты. Теперь мы ещё можем скруглять углы прямоугольника по своему усмотрению. Только благодаря первой бета-версии автор закрыл как минимум дюжину своих предложений!
- Набор обновлений для ScrollView
- Улучшение прорисовки и анимаций
- Интеграция встроенных покупок (in-app purchases) в SwiftUI
- Новый модификатор inspector()
- Новый модификатор onKeyPress()
- Управление отображением колонок NavigationSplitView в компактных макетах
- Добавление тактильных эффектов с использованием сенсорной обратной связи
- Уведомление пользователя о недоступности контента
- Одновременная заливка и обводка фигур
- Новый API для работы со spring анимациями
Прочие изменения
- Модификатор foregroundColor() теперь считается устаревшим и его заменил новый - foregroundStyle()
- Изменение цветов с использованием градиента будет происходить с анимацией
- Spring анимация теперь является дефолтной в SwiftUI и содержит гораздо больше встроенных параметров, таких как .bouncy и .snappy, а сами анимации теперь создаются с помощью гораздо более простого API
- Появилась возможность скруглять только определенные углы прямоугольника, а не все сразу
- Упрощен синтаксис для заливки и обрезки фигур: .rect, .capsule и т.д.
- При создании табличных представлений вместо ForEach(users, content: TableRow.init) можно писать просто ForEach(users)
#digest #swiftui
SwiftUI продолжает быстро развиваться, и в этом году мы видим огромное количество улучшений в прокрутке, интересные новые эффекты SF Symbols, продвинутую поддержку шейдеров Metal и многое другое.
Некоторые обновления в этом релизе из числа тех, которые автор предлагал лично. Среди них - добавление шейдеров Metal, улучшение работы Color с Codable, добавление замыкания по завершении для анимаций, которое дает нам возможность анимировать градиенты. Теперь мы ещё можем скруглять углы прямоугольника по своему усмотрению. Только благодаря первой бета-версии автор закрыл как минимум дюжину своих предложений!
- Набор обновлений для ScrollView
- Улучшение прорисовки и анимаций
- Интеграция встроенных покупок (in-app purchases) в SwiftUI
- Новый модификатор inspector()
- Новый модификатор onKeyPress()
- Управление отображением колонок NavigationSplitView в компактных макетах
- Добавление тактильных эффектов с использованием сенсорной обратной связи
- Уведомление пользователя о недоступности контента
- Одновременная заливка и обводка фигур
- Новый API для работы со spring анимациями
Прочие изменения
- Модификатор foregroundColor() теперь считается устаревшим и его заменил новый - foregroundStyle()
- Изменение цветов с использованием градиента будет происходить с анимацией
- Spring анимация теперь является дефолтной в SwiftUI и содержит гораздо больше встроенных параметров, таких как .bouncy и .snappy, а сами анимации теперь создаются с помощью гораздо более простого API
- Появилась возможность скруглять только определенные углы прямоугольника, а не все сразу
- Упрощен синтаксис для заливки и обрезки фигур: .rect, .capsule и т.д.
- При создании табличных представлений вместо ForEach(users, content: TableRow.init) можно писать просто ForEach(users)
#digest #swiftui
👍10❤5🔥2💩1
Всем привет!
Сегодня хотим поделиться с вами интересной темой - реактивное программирование.
Что такое реактивное программирование? Кратко.
Реактивное программирование - это особый подход к разработке программного обеспечения, который направлен на создание эффективных и отзывчивых систем. Он основан на принципах асинхронного и отслеживаемого потока данных между компонентами приложения. Вся архитектура строится вокруг потоков данных, которые могут изменяться и реагировать на события в реальном времени.
iOS Такой подготовил для зрителей доклад по реактивному программированию, где даже новичку будет понятно, что это за подход. Гость - Никита Веремейчик.
В нашем докладе:
- Мы подробно рассмотрим основные принципы реактивного программирования и покажем, каким образом он может быть полезен в разработке современных приложений на основе RxSwift и RxCocoa
- Мы разберемся с понятиями потоков данных, реактивных стримов и операторами, которые позволяют обрабатывать данные эффективно и гибко.
#digest #доклад
Сегодня хотим поделиться с вами интересной темой - реактивное программирование.
Что такое реактивное программирование? Кратко.
Реактивное программирование - это особый подход к разработке программного обеспечения, который направлен на создание эффективных и отзывчивых систем. Он основан на принципах асинхронного и отслеживаемого потока данных между компонентами приложения. Вся архитектура строится вокруг потоков данных, которые могут изменяться и реагировать на события в реальном времени.
iOS Такой подготовил для зрителей доклад по реактивному программированию, где даже новичку будет понятно, что это за подход. Гость - Никита Веремейчик.
В нашем докладе:
- Мы подробно рассмотрим основные принципы реактивного программирования и покажем, каким образом он может быть полезен в разработке современных приложений на основе RxSwift и RxCocoa
- Мы разберемся с понятиями потоков данных, реактивных стримов и операторами, которые позволяют обрабатывать данные эффективно и гибко.
#digest #доклад
👍21🔥8❤3🤮1
Диспетчеризация методов iOS
Диспетчеризацией методов называют процесс поиска адреса инструкций, которые нужно выполнить CPU при вызове определенного метода.
Другими словами, цель диспетчеризации методов состоит в том, чтобы программа сообщала процессору, где он может найти исполняемый код конкретного метода в памяти.
В этой статье будут рассмотрены понятие диспетчеризации, его виды, преимущества и недостатки, а также приведены небольшие задачи для укрепления знаний
#digest #диспетчеризация
Диспетчеризацией методов называют процесс поиска адреса инструкций, которые нужно выполнить CPU при вызове определенного метода.
Другими словами, цель диспетчеризации методов состоит в том, чтобы программа сообщала процессору, где он может найти исполняемый код конкретного метода в памяти.
В этой статье будут рассмотрены понятие диспетчеризации, его виды, преимущества и недостатки, а также приведены небольшие задачи для укрепления знаний
#digest #диспетчеризация
👍17🔥7❤3🤡1
UICollectionViewCompositionalLayout
В этой статье вы познакомитесь с UICollectionViewCompositionalLayout и с его помощью создатите UICollectionView с прокручивающимися секциями, а затем еще немного более их кастомизируете. Суть статьи показать как просто с помощью UICollectionViewCompositionalLayout вы можете создавать UICollectionView, которые выглядят именно так как нам необходимо. В статье вы увидите примеры кода, которые будут вам полезны при изучении данной технологии.
NSCollectionLayoutSize: Размеры ширины и высоты относятся к типу NSCollectionLayoutDimension, которые могут быть определены путем установки доли ширины/высоты макета (в процентах по отношению к его контейнеру) или путем установки абсолютных или расчетных размеров.
NSCollectionLayoutItem: Это ячейка нашего макета, которая отображается на экране в зависимости от размера.
NSCollectionLayoutGroup: содержит NSCollectionLayoutItem в горизонтальной, вертикальной или пользовательской формах.
NSCollectionLayoutSection: используется для инициализации секции путем передачи NSCollectionLayoutGroup. Секции в конечном итоге составляют СompositionalLayout.
Sections и items в СompositionalLayout соответствуют Sections и items класического СollectionViewDataSource. Группы, однако, не имеют эквивалента в СollectionViewDataSource и не отображают содержимое в виде элементов / ячеек. Они используются исключительно для описания расположения наших Items в рамках Section.
#digest
В этой статье вы познакомитесь с UICollectionViewCompositionalLayout и с его помощью создатите UICollectionView с прокручивающимися секциями, а затем еще немного более их кастомизируете. Суть статьи показать как просто с помощью UICollectionViewCompositionalLayout вы можете создавать UICollectionView, которые выглядят именно так как нам необходимо. В статье вы увидите примеры кода, которые будут вам полезны при изучении данной технологии.
NSCollectionLayoutSize: Размеры ширины и высоты относятся к типу NSCollectionLayoutDimension, которые могут быть определены путем установки доли ширины/высоты макета (в процентах по отношению к его контейнеру) или путем установки абсолютных или расчетных размеров.
NSCollectionLayoutItem: Это ячейка нашего макета, которая отображается на экране в зависимости от размера.
NSCollectionLayoutGroup: содержит NSCollectionLayoutItem в горизонтальной, вертикальной или пользовательской формах.
NSCollectionLayoutSection: используется для инициализации секции путем передачи NSCollectionLayoutGroup. Секции в конечном итоге составляют СompositionalLayout.
Sections и items в СompositionalLayout соответствуют Sections и items класического СollectionViewDataSource. Группы, однако, не имеют эквивалента в СollectionViewDataSource и не отображают содержимое в виде элементов / ячеек. Они используются исключительно для описания расположения наших Items в рамках Section.
#digest
👍12🔥5🎉2💩1
Привет, друзья!
Мы рады поделиться с вами последними новостями о нашем канале. На данный момент мы активно работаем над несколькими увлекательными выпусками, которые, мы уверены, будут вам интересны.
- Git. (Командная разработка)
- Тестирование и почему это важнее, чем вы думаете
- Пишем проект с ChatGPT и без
- SwiftUI (продвинутый уровень)
- Английский язык. Эффективные методики обучения.
И, наконец, мы хотели бы провести мок собеседование на нашем канале. Мы пригласили опытного iOS Разработчика/Team Lead, который проведет интересное и познавательное собеседование. Если вы хотите проверить свои знания и навыки, а также получить ценные советы от профессионала, пиши мне @new_repository или ставь + в комментариях.
Мы всегда открыты для ваших предложений и идей. Расскажите нам, что вы хотели бы видеть на нашем канале. Что вас интересует? Какие темы вам было бы интересно изучить? Мы с нетерпением ждем ваших комментариев и предложений.
Спасибо, что остаетесь с нами, и до скорой встречи на нашем канале!
#iOS #разработка #новости
Мы рады поделиться с вами последними новостями о нашем канале. На данный момент мы активно работаем над несколькими увлекательными выпусками, которые, мы уверены, будут вам интересны.
- Git. (Командная разработка)
- Тестирование и почему это важнее, чем вы думаете
- Пишем проект с ChatGPT и без
- SwiftUI (продвинутый уровень)
- Английский язык. Эффективные методики обучения.
И, наконец, мы хотели бы провести мок собеседование на нашем канале. Мы пригласили опытного iOS Разработчика/Team Lead, который проведет интересное и познавательное собеседование. Если вы хотите проверить свои знания и навыки, а также получить ценные советы от профессионала, пиши мне @new_repository или ставь + в комментариях.
Мы всегда открыты для ваших предложений и идей. Расскажите нам, что вы хотели бы видеть на нашем канале. Что вас интересует? Какие темы вам было бы интересно изучить? Мы с нетерпением ждем ваших комментариев и предложений.
Спасибо, что остаетесь с нами, и до скорой встречи на нашем канале!
#iOS #разработка #новости
🔥27👍11❤5🤬1
Всем привет! Очередной выпуск! На этот раз читаем и смотрим про Git.
Git - это распределенная система управления версиями, которая позволяет разработчикам эффективно работать с кодом и отслеживать все изменения, вносимые в проект. Он позволяет сохранять историю изменений, создавать ветки для параллельной разработки, объединять изменения, а также откатываться к предыдущим версиям кода.
GitFlow - это методология разработки программного обеспечения, основанная на Git. Она предлагает стратегию ветвления и слияния в Git, которая помогает организовать работу команды разработчиков и упростить процесс слияния кода. GitFlow определяет набор веток, которые используются для разработки новых функций, исправления ошибок и выпуска стабильных версий.
Команда iOS Такой подготовила доклад на YouTube, посвященный GitFlow. В докладе они рассказывают о преимуществах использования GitFlow при разработке iOS-приложений и демонстрируют практические примеры работы с ветками, слиянием кода и управлением версиями. Этот доклад может быть полезен для iOS-разработчиков начинающего уровня, и тех которые хотят улучшить свои навыки работы с Git и эффективно организовать процесс разработки.
#digest #доклад #Git
Git - это распределенная система управления версиями, которая позволяет разработчикам эффективно работать с кодом и отслеживать все изменения, вносимые в проект. Он позволяет сохранять историю изменений, создавать ветки для параллельной разработки, объединять изменения, а также откатываться к предыдущим версиям кода.
GitFlow - это методология разработки программного обеспечения, основанная на Git. Она предлагает стратегию ветвления и слияния в Git, которая помогает организовать работу команды разработчиков и упростить процесс слияния кода. GitFlow определяет набор веток, которые используются для разработки новых функций, исправления ошибок и выпуска стабильных версий.
Команда iOS Такой подготовила доклад на YouTube, посвященный GitFlow. В докладе они рассказывают о преимуществах использования GitFlow при разработке iOS-приложений и демонстрируют практические примеры работы с ветками, слиянием кода и управлением версиями. Этот доклад может быть полезен для iOS-разработчиков начинающего уровня, и тех которые хотят улучшить свои навыки работы с Git и эффективно организовать процесс разработки.
#digest #доклад #Git
👍10❤3🔥2👎1
Что нового в UIKit
iOS 17 принёс немало изменений в UIKit. Новые удобные фичи сделают ваше приложение красивее и функциональнее.
Анимация символов, превью контроллеров прямо в Xcode, авто-вибранси для лейблов — это и многое другое ждёт вас в новой версии. Читайте подробности в обзоре и сделайте свои приложения ещё круче!
#digest #uikit
iOS 17 принёс немало изменений в UIKit. Новые удобные фичи сделают ваше приложение красивее и функциональнее.
Анимация символов, превью контроллеров прямо в Xcode, авто-вибранси для лейблов — это и многое другое ждёт вас в новой версии. Читайте подробности в обзоре и сделайте свои приложения ещё круче!
#digest #uikit
👍18🔥5❤3👎1
Тестирование и почему это важнее, чем вы думаете
Тестирование в iOS - это процесс проверки функциональности, надежности и качества приложений, разработанных для устройств Apple. Оно включает в себя создание и выполнение тестовых сценариев, проверку работоспособности приложения в различных условиях и обнаружение и исправление ошибок.
Тестирование в iOS является важным этапом разработки, поскольку позволяет выявить и исправить ошибки и проблемы до того, как приложение будет выпущено в продакшн. Оно помогает гарантировать, что приложение работает правильно, соответствует требованиям пользователей и предоставляет хороший пользовательский опыт.
iOS Такой подготовил доклад с лайфкодингом по тестированию проекта. В этом докладе демонстрируется практический пример тестирования iOS-приложений, объясняют различные подходы и инструменты для тестирования, а также делятся советами и лучшими практиками. Этот доклад может быть полезен разработчикам iOS, которые хотят научиться эффективно тестировать свои проекты и повысить качество своего кода. А так же поговорим за плюсы и минусы тестирования. Приятного просмотра.
Ресурсы на гостя - Даниила.
#digest #доклад #тестирование
Тестирование в iOS - это процесс проверки функциональности, надежности и качества приложений, разработанных для устройств Apple. Оно включает в себя создание и выполнение тестовых сценариев, проверку работоспособности приложения в различных условиях и обнаружение и исправление ошибок.
Тестирование в iOS является важным этапом разработки, поскольку позволяет выявить и исправить ошибки и проблемы до того, как приложение будет выпущено в продакшн. Оно помогает гарантировать, что приложение работает правильно, соответствует требованиям пользователей и предоставляет хороший пользовательский опыт.
iOS Такой подготовил доклад с лайфкодингом по тестированию проекта. В этом докладе демонстрируется практический пример тестирования iOS-приложений, объясняют различные подходы и инструменты для тестирования, а также делятся советами и лучшими практиками. Этот доклад может быть полезен разработчикам iOS, которые хотят научиться эффективно тестировать свои проекты и повысить качество своего кода. А так же поговорим за плюсы и минусы тестирования. Приятного просмотра.
Ресурсы на гостя - Даниила.
#digest #доклад #тестирование
🔥13❤4👍4❤🔥1👎1
Глубокое погружение в Swift Regex
Обработка строк для извлечения, манипулирования или поиска данных - это основной навык, который необходимо приобрести большинству инженеров-программистов. Регулярные выражения, или regex, являются почтенным титаном обработки строк. Регулярные выражения являются неотъемлемой частью многих инструментов командной строки, используемых в Unix, поисковых системах, текстовых процессорах и текстовых редакторах. Недостатком регулярных выражений является то, что их может быть сложно создавать, читать и отлаживать. Большинство языков программирования поддерживают ту или иную форму регулярных выражений — и теперь Swift тоже поддерживает Swift Regex.
Захватывающий и новый конструктор регулярных выражений в Swift Regex предоставляет нам программный способ создания регулярных выражений. Этот инновационный подход к созданию зачастую сложных регулярных выражений наверняка сразу же понравится как новичкам, так и поклонникам регулярных выражений. Мы углубимся в Regex Builder, чтобы открыть для себя его широкие возможности.
Swift Regex обеспечивает первоклассную поддержку регулярных выражений в языке Swift и нацелен на смягчение или полное устранение многих недостатков регулярных выражений. Компилятор Swift изначально поддерживает синтаксис регулярных выражений, что приводит к ошибкам во время компиляции, подсветке синтаксиса и строго типизированным захватам. Синтаксис регулярных выражений в Swift совместим с Perl, Python, Ruby, Java, NSRegularExpression и многими другими.
В этой статье подробно разбирается то, как работают регулярные выражения в Swift и где они могут пригодиться.
#digest
Обработка строк для извлечения, манипулирования или поиска данных - это основной навык, который необходимо приобрести большинству инженеров-программистов. Регулярные выражения, или regex, являются почтенным титаном обработки строк. Регулярные выражения являются неотъемлемой частью многих инструментов командной строки, используемых в Unix, поисковых системах, текстовых процессорах и текстовых редакторах. Недостатком регулярных выражений является то, что их может быть сложно создавать, читать и отлаживать. Большинство языков программирования поддерживают ту или иную форму регулярных выражений — и теперь Swift тоже поддерживает Swift Regex.
Захватывающий и новый конструктор регулярных выражений в Swift Regex предоставляет нам программный способ создания регулярных выражений. Этот инновационный подход к созданию зачастую сложных регулярных выражений наверняка сразу же понравится как новичкам, так и поклонникам регулярных выражений. Мы углубимся в Regex Builder, чтобы открыть для себя его широкие возможности.
Swift Regex обеспечивает первоклассную поддержку регулярных выражений в языке Swift и нацелен на смягчение или полное устранение многих недостатков регулярных выражений. Компилятор Swift изначально поддерживает синтаксис регулярных выражений, что приводит к ошибкам во время компиляции, подсветке синтаксиса и строго типизированным захватам. Синтаксис регулярных выражений в Swift совместим с Perl, Python, Ruby, Java, NSRegularExpression и многими другими.
В этой статье подробно разбирается то, как работают регулярные выражения в Swift и где они могут пригодиться.
#digest
👍10❤4🔥3👎1
С вами команда iOS Такой. Нам нужна обратная связь!
Мы выпустили уже достаточное количество выпусков, и какие еще ожидаются:
- Пишем проект с ChatGPT и без
- SwiftUI (продвинутый уровень)
- Английский язык. Эффективные методики обучения.
- Диспетчеризация на практике
- Моковое собеседование iOS
- Важность one to one
Так же недавно вошли в релиз выпуски:
- Тестирование проекта на практике
- Git и командная работа
- Реактивное программирование на основе RxSwift и RxCocoa
- Как использовать XCFrameworks на практике
Нам нужна обратная связь, о том, какие выпуски вы бы хотели видеть! И что не нравится в наших выпусках/канале. Пишите все, что думаете. Мы не боимся делать ошибок - мы растем!
Мы выпустили уже достаточное количество выпусков, и какие еще ожидаются:
- Пишем проект с ChatGPT и без
- SwiftUI (продвинутый уровень)
- Английский язык. Эффективные методики обучения.
- Диспетчеризация на практике
- Моковое собеседование iOS
- Важность one to one
Так же недавно вошли в релиз выпуски:
- Тестирование проекта на практике
- Git и командная работа
- Реактивное программирование на основе RxSwift и RxCocoa
- Как использовать XCFrameworks на практике
Нам нужна обратная связь, о том, какие выпуски вы бы хотели видеть! И что не нравится в наших выпусках/канале. Пишите все, что думаете. Мы не боимся делать ошибок - мы растем!
🔥18❤4👍3👎1
Дорогие друзья!
Я хотел бы выразить свою искреннюю благодарность и признательность определенным лицам, которые оказали существенную помощь и приняли активное участие в моем становлении как разработчика. Ваша поддержка и дружеское отношения значат для меня очень много, и я не могу не упомянуть это в моем посте.
@NSOwl, спасибо тебе за твою бесценную помощь и наставничество в начале моего пути. Твои советы и знания в iOS помогли мне развиться и попасть на свою первую работу. Я до сих пор это ценю.
@MaxAnokhin и @gellert_kirill
Ваши советы и обратная связь помогали мне преодолевать трудности и развиваться в своих умениях. Без вас я бы не смог достичь таких результатов. За это время вы не просто стали для меня знакомыми, а целыми друзьями - отношениями которыми, я очень сильно дорожу.
@Dmitriy_Soloshenko
Вам я хочу выразить благодарность за то, что вы всегда были готовы поделиться своим опытом и знаниями. Спасибо Вам!
Я также очень благодарен окружению, которое меня окружает. Ваша поддержка и понимание помогают мне продолжать расти и развиваться. Я ценю каждый момент, проведенный с вами, и я счастлив быть тем, кем я являюсь сейчас.
P.S Скоро много новых выпусков ✌️
Я хотел бы выразить свою искреннюю благодарность и признательность определенным лицам, которые оказали существенную помощь и приняли активное участие в моем становлении как разработчика. Ваша поддержка и дружеское отношения значат для меня очень много, и я не могу не упомянуть это в моем посте.
@NSOwl, спасибо тебе за твою бесценную помощь и наставничество в начале моего пути. Твои советы и знания в iOS помогли мне развиться и попасть на свою первую работу. Я до сих пор это ценю.
@MaxAnokhin и @gellert_kirill
Ваши советы и обратная связь помогали мне преодолевать трудности и развиваться в своих умениях. Без вас я бы не смог достичь таких результатов. За это время вы не просто стали для меня знакомыми, а целыми друзьями - отношениями которыми, я очень сильно дорожу.
@Dmitriy_Soloshenko
Вам я хочу выразить благодарность за то, что вы всегда были готовы поделиться своим опытом и знаниями. Спасибо Вам!
Я также очень благодарен окружению, которое меня окружает. Ваша поддержка и понимание помогают мне продолжать расти и развиваться. Я ценю каждый момент, проведенный с вами, и я счастлив быть тем, кем я являюсь сейчас.
P.S Скоро много новых выпусков ✌️
❤25🥰3👍2👎1
Создаем дефолтные аватары пользователей в SwiftUI
Мы часто сталкиваемся с необходимостью отображения аватаров пользователей в наших приложениях. Однако работа с аватарами по умолчанию для пользователей, не имеющих фотографий профиля, может быть утомительной и повторяющейся. В этой статье мы рассмотрим простое и эффективное решение этой проблемы с помощью SwiftUI и расширений Swift.
К концу этой статьи у вас будет чистый и персонализированный генератор дефолтных аватаров, который добавит нотку уникальности пользовательскому интерфейсу вашего приложения.
Содержание статьи с примерами кода
1. Настройка модели пользователя
2. Создание расширения для строк
3. Кастомный View дефолтного аватара
4. Реализация генератора аватаров
#digest #swiftui
Мы часто сталкиваемся с необходимостью отображения аватаров пользователей в наших приложениях. Однако работа с аватарами по умолчанию для пользователей, не имеющих фотографий профиля, может быть утомительной и повторяющейся. В этой статье мы рассмотрим простое и эффективное решение этой проблемы с помощью SwiftUI и расширений Swift.
К концу этой статьи у вас будет чистый и персонализированный генератор дефолтных аватаров, который добавит нотку уникальности пользовательскому интерфейсу вашего приложения.
Содержание статьи с примерами кода
1. Настройка модели пользователя
2. Создание расширения для строк
3. Кастомный View дефолтного аватара
4. Реализация генератора аватаров
#digest #swiftui
👍9🔥5❤2👎1🤮1