Как стать автором
Поиск
Написать публикацию
Обновить
9.65

Swift *

Открытый объектно-ориентированный язык

Сначала показывать
Порог рейтинга
Уровень сложности

Copy-on-write

Время на прочтение3 мин
Количество просмотров37K

Что такое copy-on-write?

Что такое COW или какой механизм может помочь сохранить нашу память при работе со структурами?

Читать далее

Взаимодействие с alerts и permissions в ui-тестировании iOS

Время на прочтение4 мин
Количество просмотров4.4K

Привет, Хабр!
Меня зовут Ахмат. Я iOS QA Automation Engineer - в Vivid Money.

В этой статье я хочу рассказать про взаимодействие с alerts и permissions в iOS тестах и показать, как их можно эффективно обрабатывать в своём проекте.

Данная статья будет полезна начинающим iOS-автоматизаторам, либо разработчикам, которые решили изучить XCUITest и покрыть свой проект ui-тестами.

В рамках статьи мы разберем:

Читать далее

MVI в iOS-приложении

Время на прочтение10 мин
Количество просмотров9K

Вы скорее всего знаете, как это бывает: пишешь код, пишешь, а в итоге получаешь настолько большой модуль, что полностью теряешь над ним контроль. И всё это добро изменяется со страшным скрипом, расширяется медленно и совсем не покрывается тестами. Ровно это с нами и произошло.

Меня зовут Саша, я iOS-разработчик в hh.ru. В сегодняшней статьей расскажу, как мы ушли от этого монструозного ужаса и что у нас в итоге получилось. Спойлер, мы использовали стейт-машину.

Читать далее

[Async/await] Как работает Coroutine Model

Время на прочтение5 мин
Количество просмотров7.2K

Всем привет, на связи Никита и Технократия! В прошлой статье мы уже обсудили проблемы текущего состояния concurrency в Swift. Давайте двигаться дальше и сегодня мы начнем свое знакомство с необходимой базой для async/await в Swift 5.5

Читать далее

Как устроен системный калькулятор в iPhone

Время на прочтение1 мин
Количество просмотров9.4K

Приложение написано на сценах. Root-контроллер называется DisplayViewController. Лейбл с введенными цифрами обернули в контейнер DisplayView и добавили жесты LongPress, Swipe и Tap.

Читать далее

RxSwift + PropertyWrapper: инкапсуляция и синтаксический сахар

Время на прочтение11 мин
Количество просмотров2.6K

Согласно последнему опросу российских команд iOS разработки made by iOS Good Reads, архитектура MVVM занимает лидирующую строчку в хит-параде, этого подхода придерживаются 59% опрошенных. А как известно, наиболее частый спутник MVVM - реактивный подход. Наша команда Upstarts - не исключение, мы используем MVVM + RxSwift последние 5 лет на большинстве проектов, и за это время столкнулись с множеством проблем и челленджей, написали десятки расширений, оберток и сформировали свой собственный пул инструментов для максимального удобства работы с RxSwift.

В этом материале я раскрою и предложу решение для одной из самых распространенных проблем при работе с Rx свойствами - инкапсуляцией прав на чтение / запись, а также предложу удобную запись для инкапсулированных Rx свойств.

Читать далее

Создание и настройка диаграмм с помощью нового Swift Charts Framework

Время на прочтение6 мин
Количество просмотров4.7K

Компания Apple только что анонсировала фреймворк Swift Charts, который мы можем использовать для создания диаграмм в наших приложениях. Судя по беглому взгляду на API, фреймворк может предоставить гораздо больше, чем базовые диаграммы, создаваемые такими приложениями, как Numbers и т.д. В этой статье хотелось бы поделиться первыми экспериментами с API.

Для примеров будем использовать набор данных о популярных именах.

Читать далее

Swift. Struct vs Class memory and performance comparison или следует ли всегда использовать Struct

Время на прочтение5 мин
Количество просмотров4.4K

Как и многие iOS разработчики, я столкнулся с дилеммой: какой объект использовать для построения архитектуры проекта. Взять для примера реализацию паттерна фасад. Этот объект должен принять некоторое количество сущностей и реализовать методы для упрощенного доступа к ним. Если не вдаваться в подробности, то подойдет и класс, и структура: оба могут инкапсулировать объекты и функции. Так что же выбрать?

Читать далее

Swift. KeyChain. Property wrapper

Время на прочтение5 мин
Количество просмотров5.3K

Так или иначе, все реже можно найти приложение, которое не требует создания аккаунта для полноценной работы. В связи с этим возникает необходимость в некоторого рода защищенном хранилище аутентификационных данных. В iOS для этих целей используется framework Security и его сервис KeyChain. Далее будет описан подход для работы с этим сервисом.

Читать далее

Swift. UserDefaults. Property wrapper

Время на прочтение4 мин
Количество просмотров7.2K

Вряд ли можно представить хоть одно приложение, которое не требует сохранения настроек пользователя. Очевидно, что для этих целей существует масса решений, и каждое из них решает одну, конкретную задачу. Сегодня речь пойдет о постоянном хранилище данных UserDefaults и его использовании для хранения данных.

Читать далее

WWDC 2022. Что нового в SwiftUI

Время на прочтение3 мин
Количество просмотров4.3K

Всем привет, с вами я, Анна Жаркова, ведущий разработчик компании Usetech. 

Неделя тематических сессий в самом разгаре. Сегодня поговорим о SwiftUI, какие же новинки были уже представлены и озвучены.

В этой версии ставку сделали как на поддержку новых возможностей iOS, так и на улучшение и доработку уже существовавших. Основными направления развития SwiftUI стали:

1. Поддержка нового фреймворка для графиков Charts.

2.Навигация (своя, родная, нативная).

3.Сложные контролы.

4.Поддержка шаринга.

5.Графика и разметка.

Предлагаю рассмотреть их детальнее.

Charts

Начнем по порядку с API для графиков.

Читать далее

Чего ждать разработчику от WWDC 2022

Время на прочтение7 мин
Количество просмотров2.6K

Всем привет, с вами я, Анна Жаркова, ведущий разработчик компании Usetech. 

Итак, долгожданная ежегодная презентация WWDC состоялась, мы готовы обсудить представленные новинки и анонсированные сессии. В этом году на Keynote основной упор был сделан на:

- игры и разработку

- иммерсивный звук и изображение

- многооконность

- расширенный и улучшенный шаринг, механизмы обмена самыми разными данными и совместные процессы, взаимодействие между устройствами

- улучшенные возможности отслеживать состояние здоровья и физическую активность

Разумеется, полноценная поддержка такого функционала требует хорошего производительного железа, которое и было представлено, а также программных средств, механизмов, API и функционала для разработки производительных приложений с поддержкой улучшенного перформанса, управления памятью, безопасности, а также всех представленных возможностей.

Сразу скажу, что все сессии упомянуть не возможно. В этом году их много, они довольно разнообразные и разноплановые. От улучшений уже известных нам фреймворков (SwiftUI, WidgetKit, SharePlay) до совсем новых (WeatherKit, ScreenCaptureKit). Также верно сказано, что описания сессий в этом году не сильно многословны, видимо, что подстегнуть зрителей к просмотру всех.

Читать далее

Гибкая навигация в iOS

Время на прочтение11 мин
Количество просмотров5.4K

Помните времена, когда дизайнеры рисовали незамысловатые интерфейсы, а разработчики просто описывали переходы от одного экрана к другому? Вот и я не помню. Современное iOS-приложение – это тысячи строк кода, где добрая четверть – всего лишь описание навигации. Закономерно, что для упрощения жизни появляются различные фреймворки для навигации. 

Меня зовут Тимур Шафигулин, я – iOS-разработчик в hh.ru. В этой статье я расскажу про фреймворк для навигации в iOS-приложении.

Читать далее

Ближайшие события

[Async/await] Проблемы Swift 5.4

Время на прочтение4 мин
Количество просмотров4.2K

Всем привет! Меня зовут Никита, я работаю в компании Технократия и занимаюсь iOS-разработкой. С сегодняшнего дня мы начинаем регулярный выпуск статей, в которых я буду рассказывать о современном подходе к написанию асинхронного кода в Swift. 

Данный мини-курс будет логически разбит на серию небольших статей, в которых мы постепенно будем усложнять темы и смотреть на все более интересные примеры с использованием новой технологии.

Читать далее

Золотые правила “weak self”

Время на прочтение6 мин
Количество просмотров13K

Захват self в замыкании — обычная вещь в Swift, которая скрывает множество нюансов. Нужно ли делать его weak, чтобы избежать цикла ссылок? И является ли проблемой сделать его weak постоянно?

Читать далее

Темный путь

Время на прочтение6 мин
Количество просмотров2.6K

За последние несколько месяцев я попробовал два новых языка. Swift и Kotlin. Они имеют ряд общих черт. Действительно, сходство настолько разительное, что я задаюсь вопросом, не является ли это новой тенденцией в нашей лингвистической текучке. Если да, то это темный путь.

Читать далее

Регулировка contentOffset с помощью UICollectionViewLayout

Время на прочтение5 мин
Количество просмотров4K

Один из распространенных UI элементов в iOS является UICollectionView.

Часто при построении таких коллекций возникает необходимость обновления данных, например добавления новых ячеек в коллекцию.

Рассмотрим простой пример - список новостей, вертикальный UICollectionView. При пролистывании списка вниз, необходимо подгружать старые новости. В данном случае все просто - нужно обновить данные и выполнить один из методов:

Читать далее

Асинхронный код синхронно: как устроено юнит-тестирование в СберМаркете

Время на прочтение7 мин
Количество просмотров4.2K

Привет! Меня зовут Владислав Сединкин, я работаю iOS-разработчиком в СберМаркете. Сегодня я расскажу, как мы проводим юнит-тестирование, с какими сложностями сталкивались при написании тестов и как их решали.  

Я выступал с этим докладом на iOS Meetup | СберМаркет Tech, здесь его сжатая версия.

Читать далее

Правильно подключаем тяжелые зависимости к Xcode проекту через Swift Package Manager

Время на прочтение7 мин
Количество просмотров7.8K

В этой статье я расскажу о проблемах с которыми я столкнулся при подключении тяжелых зависимостей к iOS проекту с помощью Swift Package Manager и о способе их решения.

Читать далее

Особенности разработки для WatchOS приложений для здоровья

Время на прочтение11 мин
Количество просмотров4K

Достаточно плотно разработкой программного обеспечения для часов я занимаюсь с 2017 года. За этот период сменилось 4 версии WatchOS (5, 6, 7, 8). Появилось больше функционала и исправлено множество баг с внедрением каждой новой версии Swift. Complications стали более самостоятельной частью приложения.

За 5 лет работы в сфере разработки приложений для часов мне пришлось столкнуться с множеством различных проблем и задач. Я хотел бы поделиться опытом и получить критические замечания относительно проделанной работы. Заранее сделаю оговорку, что решения, используемые в моей разработке, не претендуют на истинно верные. Не буду спорить, что что-то можно было бы сделать по-другому и лучше.

Читать далее