Как не потерять голову (и память) при поиске утечек в iOS (6 мин)
Способы обнаружения утечек из статьи:
👉 С помощью Xcode Memory Graph
👉 С помощью Instruments. После запуска приложения вы можете увидеть в реальном времени, сколько ресурсов потребляется в строке Allocations, и были ли обнаружены какие-либо утечки памяти в строке Leaks
👉 С помощью инструмента «Анализ» (только для Objective-C)
👉 С помощью unit-тестов
👉 С помощью Symbolic breakpoint. Вы можете создать точку останова, чтобы отследить вызовы метода dealloc, и проверить, был ли освобожден контроллер из памяти
#memory
Способы обнаружения утечек из статьи:
👉 С помощью Xcode Memory Graph
👉 С помощью Instruments. После запуска приложения вы можете увидеть в реальном времени, сколько ресурсов потребляется в строке Allocations, и были ли обнаружены какие-либо утечки памяти в строке Leaks
👉 С помощью инструмента «Анализ» (только для Objective-C)
👉 С помощью unit-тестов
👉 С помощью Symbolic breakpoint. Вы можете создать точку останова, чтобы отследить вызовы метода dealloc, и проверить, был ли освобожден контроллер из памяти
#memory
👍2👎1
Освоение диаграмм в SwiftUI. Доступность (3 мин)
Swift Charts понимает ваши данные и автоматически создает дерево доступности для вашей диаграммы. Вам не потребуется выполнять никаких специальных действий, чтобы сделать вашу диаграмму доступной при использовании фреймворка Swift Charts.
#swiftui #accessibility
Swift Charts понимает ваши данные и автоматически создает дерево доступности для вашей диаграммы. Вам не потребуется выполнять никаких специальных действий, чтобы сделать вашу диаграмму доступной при использовании фреймворка Swift Charts.
#swiftui #accessibility
👍3👎1
Apple’s Worldwide Developers Conference returns June 5, 2023
WWDC в этом году пройдет с 5 по 9 июня.
Будут представлены новинки iOS, iPadOS, macOS, watchOS и tvOS. Также будут представлены новые технологии и инструменты для разработчиков.
Наряду с объявлениями, сделанными в ходе основного доклада и презентаций State of the Union 5 июня, онлайн-программа этого года будет включать сессии, индивидуальные лабораторные занятия и возможности для общения с инженерами Apple и другими разработчиками.
До 19 апреля можно поучаствовать в Swift Student Challenge.
#apple #wwdc
WWDC в этом году пройдет с 5 по 9 июня.
Будут представлены новинки iOS, iPadOS, macOS, watchOS и tvOS. Также будут представлены новые технологии и инструменты для разработчиков.
Наряду с объявлениями, сделанными в ходе основного доклада и презентаций State of the Union 5 июня, онлайн-программа этого года будет включать сессии, индивидуальные лабораторные занятия и возможности для общения с инженерами Apple и другими разработчиками.
До 19 апреля можно поучаствовать в Swift Student Challenge.
#apple #wwdc
🔥3👎1
Посмотрите на свою белую спину, а потом вот на эти видео 😎
📺 iOS 17 - Release Date Confirmed, New Leaks & WWDC 2023! (10 мин)
📺 iOS 16.4 - 50+ Changes and Features! (19 мин)
📺 Новости мобильной разработки 2023.9 (37 мин)
📺 Менторство в IT — Как это работает #2 (49 мин)
#подборкавидео
📺 iOS 17 - Release Date Confirmed, New Leaks & WWDC 2023! (10 мин)
📺 iOS 16.4 - 50+ Changes and Features! (19 мин)
📺 Новости мобильной разработки 2023.9 (37 мин)
📺 Менторство в IT — Как это работает #2 (49 мин)
#подборкавидео
😁6👎1
Болевые точки Dart и Flutter (24 мин)
Глобально все «раздражение» автор разделил на 3 основные части:
👉 проблемный дизайн Dart как современного ЯП;
👉 средства разработки (IDE и tooling), которые иногда не только не помогают, но и немножечко вредят;
👉 ограничения Flutter, которых могло и не быть.
а также он выделил...
👉 не нативные UI виджеты;
👉 уровень производительности (особенно в вебе);
👉 отсутствие динамического обновления с бека;
👉 state management ecosystem is a mess;
👉 нет возможности подгружать динамические библиотеки в run-time;
👉 нет официальной поддержки аудио (только ограниченные сторонние пакеты);
Пробовали ли вы flutter? Как вам? 🙋
#crossplatform
Глобально все «раздражение» автор разделил на 3 основные части:
👉 проблемный дизайн Dart как современного ЯП;
👉 средства разработки (IDE и tooling), которые иногда не только не помогают, но и немножечко вредят;
👉 ограничения Flutter, которых могло и не быть.
а также он выделил...
👉 не нативные UI виджеты;
👉 уровень производительности (особенно в вебе);
👉 отсутствие динамического обновления с бека;
👉 state management ecosystem is a mess;
👉 нет возможности подгружать динамические библиотеки в run-time;
👉 нет официальной поддержки аудио (только ограниченные сторонние пакеты);
Пробовали ли вы flutter? Как вам? 🙋
#crossplatform
🤯5
Для чего используется Associated type в swift?
Anonymous Quiz
23%
в enum для хранения данных
57%
в протоколах для ограничения на используемые типы
12%
для определения типов в классах
7%
не знаю
👎4❤1👍1
Understanding protocol associated types and their constraints
Associated type добавляется в протокол и позволяет не специфицировать конкретный тип данных, а ограничить его лишь соответствием протоколу. Интересные кейсы читайте в статье
#swift
Associated type добавляется в протокол и позволяет не специфицировать конкретный тип данных, а ограничить его лишь соответствием протоколу. Интересные кейсы читайте в статье
#swift
👍2
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