The relationship between UIView and CALayer (1 мин)
Об отношениях UIView и CALayer:
👉 UIView наследуется от UIResponder, это базовый юнит иерархии view и контейнер для CALayer
👉 CALayer - sublayer UIView, который обрабатывает отрисовку и анимации содержимого view
👉 UIView контроллирует графику, анимации и верстку с помощью CALayer. Например, свойства frame, bounds и center UIView задаются соответствующими свойствами CALayer
👉 CALayer предоставляет множество свойств и функций, которых нет у UIView. Например, shadow, corner radius, border, gradient
#ui
Об отношениях UIView и CALayer:
👉 UIView наследуется от UIResponder, это базовый юнит иерархии view и контейнер для CALayer
👉 CALayer - sublayer UIView, который обрабатывает отрисовку и анимации содержимого view
👉 UIView контроллирует графику, анимации и верстку с помощью CALayer. Например, свойства frame, bounds и center UIView задаются соответствующими свойствами CALayer
👉 CALayer предоставляет множество свойств и функций, которых нет у UIView. Например, shadow, corner radius, border, gradient
#ui
👍6👎1
Вышел Swift 5.8 (2 мин)
Обновление включает в себя функции и возможности, которые получат официальную поддержку в Swift 6, но разработчики уже могут использовать их, передав компилятору флаг
Также обновлена официальная документация в новом формате, менеджер пакетов Swift и SwiftSyntax.
Apple продолжает внедрять поддержку своего языка программирования на машинах под управлением Windows.
Бинарные файлы Swift 5.8 для Xcode, Windows и Linux доступны для скачивания на официальном сайте. Также Swift 5.8 поставляется вместе с Xcode 14.3, который компания выпустила на этой неделе.
#swift
Обновление включает в себя функции и возможности, которые получат официальную поддержку в Swift 6, но разработчики уже могут использовать их, передав компилятору флаг
-enable-upcoming-feature
, а затем указав идентификаторы самих функций.Также обновлена официальная документация в новом формате, менеджер пакетов Swift и SwiftSyntax.
Apple продолжает внедрять поддержку своего языка программирования на машинах под управлением Windows.
Бинарные файлы Swift 5.8 для Xcode, Windows и Linux доступны для скачивания на официальном сайте. Также Swift 5.8 поставляется вместе с Xcode 14.3, который компания выпустила на этой неделе.
#swift
🔥5👎2
Test Plans — теперь по умолчанию для новых проектов с Xcode 14.3 (2 мин)
В Xcode 14.3 для новых проектов по умолчанию используется Test Plan. Данный план тестирования по умолчанию в редакторе Test Plan помечен как Autocreated (создан автоматически), он может быть просмотрен и изменен, как и обычный. Для нового проекта, если вы откроете схему по умолчанию, план тестирования будет указан в разделе Test, а кнопка преобразования не появится
#testing
В Xcode 14.3 для новых проектов по умолчанию используется Test Plan. Данный план тестирования по умолчанию в редакторе Test Plan помечен как Autocreated (создан автоматически), он может быть просмотрен и изменен, как и обычный. Для нового проекта, если вы откроете схему по умолчанию, план тестирования будет указан в разделе Test, а кнопка преобразования не появится
#testing
👎1🤩1
Традиционная подборка видео 😎
📺 The Worst Design Pattern in iOS Dev (5 мин)
📺 How to Make an App in 8 Days (2023) - Full Walkthrough (180 мин)
📺 Top 20 вопросов на собеседовании на позицию iOS (3 видео)
📺 iOS-приложение на Swift c нуля! Реалити-создание проекта с разработчиком. Выпуск 3. (42 мин)
#подборкавидео
📺 The Worst Design Pattern in iOS Dev (5 мин)
📺 How to Make an App in 8 Days (2023) - Full Walkthrough (180 мин)
📺 Top 20 вопросов на собеседовании на позицию iOS (3 видео)
📺 iOS-приложение на Swift c нуля! Реалити-создание проекта с разработчиком. Выпуск 3. (42 мин)
#подборкавидео
👍6👎1
5 reasons I still feel SwiftUI is premature (5 мин)
Многие в восторге от SwiftUI 😎
А вот автор статьи считает его сырым:
👉 Все еще невозможно использовать без UIKit. Например, navbar, tab bar, TextEditor
👉 Ограниченный scroll view. Невозможно использовать
👉 Целевой экран Navigation link предзагружен. Нужны костыли, чтобы сделать ленивую загрузку view
👉 ForEach ограничен невозможностью использовать index
👉 Многие SDK не поддерживают SwiftUI
#swiftUI
Многие в восторге от SwiftUI 😎
А вот автор статьи считает его сырым:
👉 Все еще невозможно использовать без UIKit. Например, navbar, tab bar, TextEditor
👉 Ограниченный scroll view. Невозможно использовать
contentOffset
и velocity
👉 Целевой экран Navigation link предзагружен. Нужны костыли, чтобы сделать ленивую загрузку view
👉 ForEach ограничен невозможностью использовать index
👉 Многие SDK не поддерживают SwiftUI
#swiftUI
👎7👍4
Переходим на Flutter: за и против (8 мин)
Резюмируя:
👉 Виджеты Flutter позволяют быстро и гибко реализовывать сложные пользовательские представления, а сам Dart легче освоить, чем Kotlin, Swift или Java
👉 Flutter имеет активное сообщество разработчиков, различные пакеты, а также программы для повышения качества этих пакетов. Инструментарий старается идти в ногу со временем
👉 Реальная производительность может отличаться от платформы к платформе, поэтому необходимо определиться с целевым предназначением
👉 Пользовательское взаимодействие на некоторых платформах может отличаться от нативного
#crossplatform
Резюмируя:
👉 Виджеты Flutter позволяют быстро и гибко реализовывать сложные пользовательские представления, а сам Dart легче освоить, чем Kotlin, Swift или Java
👉 Flutter имеет активное сообщество разработчиков, различные пакеты, а также программы для повышения качества этих пакетов. Инструментарий старается идти в ногу со временем
👉 Реальная производительность может отличаться от платформы к платформе, поэтому необходимо определиться с целевым предназначением
👉 Пользовательское взаимодействие на некоторых платформах может отличаться от нативного
#crossplatform
👎12👍6
[iOS] Make your app suitable for UI auto-testing (10 мин)
Можно добавить в свое приложение бекдоры, скрытые от пользователя, такие как изменения API URL, работу с фича тогглами, пропуски онбордингов и т.д. Это поможет сделать тестирование более атомарным, уменьшить время прогона, улучшить стабильность и поработать с тестовым покрытием.
В статье приведены инструменты и примеры их работы для контроля и работы с UI тестами:
👉 launchArguments and launchEnvironment
👉 SBTUITestTunnel
👉 mac host — test app tunnel
#testing
Можно добавить в свое приложение бекдоры, скрытые от пользователя, такие как изменения API URL, работу с фича тогглами, пропуски онбордингов и т.д. Это поможет сделать тестирование более атомарным, уменьшить время прогона, улучшить стабильность и поработать с тестовым покрытием.
В статье приведены инструменты и примеры их работы для контроля и работы с UI тестами:
👉 launchArguments and launchEnvironment
👉 SBTUITestTunnel
👉 mac host — test app tunnel
#testing
👍2👎1
Как компании подготовиться к модуляризации iOS приложений (9 мин)
👉 Модуляризация — отличный подход, который помогает упростить разработку приложений, их поддержку и развитие, но этот процесс требует много времени и зависит от многих факторов
👉 Предпосылок к модуляризации приложений много — от сложностей в работе с большой системой до необходимости повышения качества разработки. Понять, нужна ли в вашем проекте модуляризация приложения, поможет список вопросов-маркеров
👉 Перед модуляризацией приложения желательно подготовиться. Например, построить пайплайны, внедрить кодогенерацию
👉 Перед разработкой желательно все спроектировать «на бумаге» — это поможет избежать большого количества проблем
#модуляризация
👉 Модуляризация — отличный подход, который помогает упростить разработку приложений, их поддержку и развитие, но этот процесс требует много времени и зависит от многих факторов
👉 Предпосылок к модуляризации приложений много — от сложностей в работе с большой системой до необходимости повышения качества разработки. Понять, нужна ли в вашем проекте модуляризация приложения, поможет список вопросов-маркеров
👉 Перед модуляризацией приложения желательно подготовиться. Например, построить пайплайны, внедрить кодогенерацию
👉 Перед разработкой желательно все спроектировать «на бумаге» — это поможет избежать большого количества проблем
#модуляризация
👍2👎1
DivKit. Server Driven UI. Ольга Ким. Яндекс — Как это работает #3 (46 мин)
Обсуждаем вёрстку UI мобильных приложения на сервере без необходимости обновления приложений — Server Driven UI. Всё это на примере Open Source движка от Яндекс DivKit.
Гость выпуска — Ольга Ким, CTO DivKit в Яндекс.
#какэтоработает
Обсуждаем вёрстку UI мобильных приложения на сервере без необходимости обновления приложений — Server Driven UI. Всё это на примере Open Source движка от Яндекс DivKit.
Гость выпуска — Ольга Ким, CTO DivKit в Яндекс.
#какэтоработает
🔥8👎7❤1👍1
Swift async/await. Чем он лучше GCD? (12 мин)
Swift async/await - это новая фича языка, добавленная в swift 5.5. Она позволяет работать с асинхронными функциями в синхронном стиле. Разберем проблемы при работе с многопоточностью до async/await:
👉 Pyramid of doom - вложенность замыканий. Возникает сложность визуального восприятия
👉 Неудобная обработка ошибок
👉 Ошибки с замыканиями не выявляются компилятором
👉 Thread explosion. Если помещать в очереди много потокоблокирующих задач (которые используют локи, sync или sleep), то GCD не хватит потоков из его пулла, и он начнет создавать новые
👉 Priority inversion - в некоторых случаях задача с более высоким приоритетом может ожидать задачу с более низким приоритетом
#concurrency
Swift async/await - это новая фича языка, добавленная в swift 5.5. Она позволяет работать с асинхронными функциями в синхронном стиле. Разберем проблемы при работе с многопоточностью до async/await:
👉 Pyramid of doom - вложенность замыканий. Возникает сложность визуального восприятия
👉 Неудобная обработка ошибок
👉 Ошибки с замыканиями не выявляются компилятором
👉 Thread explosion. Если помещать в очереди много потокоблокирующих задач (которые используют локи, sync или sleep), то GCD не хватит потоков из его пулла, и он начнет создавать новые
👉 Priority inversion - в некоторых случаях задача с более высоким приоритетом может ожидать задачу с более низким приоритетом
#concurrency
👍9❤1👎1
Firebase is Overrated. 5 Alternatives that are currently killing it
Firebase имеет достойные альтернативы:
👉 Supabase
👉 Amplify
👉 Apprite
👉 NHost
👉 MongoDB Realm
Подробнее о плюсах и минусах каждого в статье
#tools
Firebase имеет достойные альтернативы:
👉 Supabase
👉 Amplify
👉 Apprite
👉 NHost
👉 MongoDB Realm
Подробнее о плюсах и минусах каждого в статье
#tools
👎5👍4
Шаблон Цепочка обязанностей и его реализация на Swift
Паттерн Цепочка обязанностей — это поведенческий паттерн проектирования, который позволяет обрабатывать запросы путем формирования цепочки объектов обработки. Каждый объект обработки содержит ссылку на следующий объект в цепочке. Согласно этому шаблону, при получении запроса каждый объект в цепочке либо обрабатывает запрос, либо передает его следующему объекту в цепочке. К основным преимуществам этого шаблона относятся:
👉 Разделение отправителя и получателя запроса
👉 Динамическое добавление или изменение порядка обработки в цепочке
👉 Повышение модульности и поддерживаемости кода
Пример на Swift ищите в статье
#паттерны
Паттерн Цепочка обязанностей — это поведенческий паттерн проектирования, который позволяет обрабатывать запросы путем формирования цепочки объектов обработки. Каждый объект обработки содержит ссылку на следующий объект в цепочке. Согласно этому шаблону, при получении запроса каждый объект в цепочке либо обрабатывает запрос, либо передает его следующему объекту в цепочке. К основным преимуществам этого шаблона относятся:
👉 Разделение отправителя и получателя запроса
👉 Динамическое добавление или изменение порядка обработки в цепочке
👉 Повышение модульности и поддерживаемости кода
Пример на Swift ищите в статье
#паттерны
👍4
Apple Plans to Launch More Than Just Its New Headset at WWDC
Что ожидается на WWDC в этом году?
👉 the Reality headset (гарнитура дополненной реальности)
👉 новая xrOS и SDK для гарнитуры
👉 новые MacBook
👉 iOS 17
👉 iPadOS 17
👉 macOS 14
👉 крупное обновление на watchOS 10
🔥 Apple работает над переработкой программного обеспечения в iOS 17, чтобы открыть iPhone для загрузки приложений за пределами официального магазина к следующему году для соответстветсивя новым европейским нормам
#wwdc #слухи
Что ожидается на WWDC в этом году?
👉 the Reality headset (гарнитура дополненной реальности)
👉 новая xrOS и SDK для гарнитуры
👉 новые MacBook
👉 iOS 17
👉 iPadOS 17
👉 macOS 14
👉 крупное обновление на watchOS 10
🔥 Apple работает над переработкой программного обеспечения в iOS 17, чтобы открыть iPhone для загрузки приложений за пределами официального магазина к следующему году для соответстветсивя новым европейским нормам
#wwdc #слухи
🔥3😁2👍1👎1
Интеграция Yandex MapKit в SwiftUI проект. Часть 1 (4 мин)
Yandex MapKit — это кроссплатформенная библиотека, которая позволяет использовать возможности Яндекс.Карт в мобильных приложениях для iOS и Android.
Основная проблема в том, что библиотека Yandex MapKit создана для UIKit, в статье пример интеграции со SwiftUI
#swiftui
Yandex MapKit — это кроссплатформенная библиотека, которая позволяет использовать возможности Яндекс.Карт в мобильных приложениях для iOS и Android.
Основная проблема в том, что библиотека Yandex MapKit создана для UIKit, в статье пример интеграции со SwiftUI
#swiftui
👍4👎3🔥2
Forwarded from Mobile Developer (Алексей Гладков)
Небольшой опрос общественного мнения Если бы вы начали делать новый проект, то какую технологию бы выбрали?Небольшой опрос общественного мнения Если бы вы начали делать новый проект, то какую технологию бы выбрали?
Anonymous Poll
67%
Native (Swift, Kotlin)
42%
Kotlin Multiplatform
12%
Flutter
1%
React Native
3%
Что-то другое
👎1
Учитесь, глупцы (7 мин)
Некоторые примеры использования ChatGPT разными специалистами:
👉 Красиво отрефакторить метод
👉 Написание юнит тестов
👉 Написание регулярных выражений
👉 Может помочь вам реализовать ваш пет проект на незнакомом вам стеке, главное направлять его.
👉 Генерация кода: очень хорошо, на уровне джуна
👉 Создания "скелета" будущей статьи (кейс психолога)
#ml #chatgpt
Некоторые примеры использования ChatGPT разными специалистами:
👉 Красиво отрефакторить метод
👉 Написание юнит тестов
👉 Написание регулярных выражений
👉 Может помочь вам реализовать ваш пет проект на незнакомом вам стеке, главное направлять его.
👉 Генерация кода: очень хорошо, на уровне джуна
👉 Создания "скелета" будущей статьи (кейс психолога)
#ml #chatgpt
👍6👎1
ChatGPT integration in Xcode: How to improve your Apps with AI (6 мин)
В статье рассказывается, как добавить в Xcode Source Editor Extension с ChatGPT, которое может:
👉 Преобразовывать код. Команда, которая преобразует JSON в структуру Swift
👉 Определять Code Smells. ChatGPT определит, что можно улучшить в нашем исходном коде.
👉 Объяснить, что происходит в коде
#chatgpt #tools
В статье рассказывается, как добавить в Xcode Source Editor Extension с ChatGPT, которое может:
👉 Преобразовывать код. Команда, которая преобразует JSON в структуру Swift
👉 Определять Code Smells. ChatGPT определит, что можно улучшить в нашем исходном коде.
👉 Объяснить, что происходит в коде
#chatgpt #tools
🤯8🔥3
Хеш-таблица, хеш-функция в Swift (5 мин)
В Swift есть встроенная хеш-функциия. Вспомним немного теории.
В хеш-таблицах очень быстро работает поиск - O(1). Но если вам придется пройтись по связанному списку, то в худшем случае это может быть O(n).
Периодически мы получаем два хеша или два объекта, которые хешируются на один и тот же индекс (коллизии). Используем связный список, соединяем их в цепочку - это самый распространенный способ обработки коллизий в хеш-таблице.
#алгоритмы
В Swift есть встроенная хеш-функциия. Вспомним немного теории.
В хеш-таблицах очень быстро работает поиск - O(1). Но если вам придется пройтись по связанному списку, то в худшем случае это может быть O(n).
Периодически мы получаем два хеша или два объекта, которые хешируются на один и тот же индекс (коллизии). Используем связный список, соединяем их в цепочку - это самый распространенный способ обработки коллизий в хеш-таблице.
#алгоритмы
👍4👎2
DoccGPT: cамодокументируемый код на Swift с помощью GPT и DocC (4 мин)
DoccGPT — это эксперимент по полной автоматизации документирования кодовой базы на Swift.
Компилятор документации DocC преобразует текст на основе Markdown в обширную документацию для проектов Swift и Objective‑C и отображает ее прямо в окне документации Xcode. Вы также можете размещать эту документацию на веб‑сайте.
#ml #tools
DoccGPT — это эксперимент по полной автоматизации документирования кодовой базы на Swift.
Компилятор документации DocC преобразует текст на основе Markdown в обширную документацию для проектов Swift и Objective‑C и отображает ее прямо в окне документации Xcode. Вы также можете размещать эту документацию на веб‑сайте.
#ml #tools
❤12👎2
Цикломатическая сложность в Swift
Цикломатическая сложность — количество точек принятия решений в коде. Чем больше у вас точек принятия решений — например, операторов if, switch, циклов и так далее, — тем сложнее становится ваш код. А чем сложнее код, тем труднее его понимать, тестировать и поддерживать.
В Swift для измерения цикломатической сложности разработчики могут использовать такие инструменты, как встроенный статический анализатор Xcode или инструменты сторонних разработчиков, например SwiftLint.
#tools
Цикломатическая сложность — количество точек принятия решений в коде. Чем больше у вас точек принятия решений — например, операторов if, switch, циклов и так далее, — тем сложнее становится ваш код. А чем сложнее код, тем труднее его понимать, тестировать и поддерживать.
В Swift для измерения цикломатической сложности разработчики могут использовать такие инструменты, как встроенный статический анализатор Xcode или инструменты сторонних разработчиков, например SwiftLint.
#tools
👍3👎3❤1