Обновить
10.46

Swift *

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

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

Экономьте деньги при использовании GitHub Actions для iOS CI/CD

Время на прочтение5 мин
Охват и читатели2.6K

В этом сообщении блога я делюсь советами о том, как наиболее эффективно использовать GitHub Actions и избежать лишнего времени выполнения и денежных затрат.

Я предполагаю, что вы знакомы с GitHub Actions и уже использовали их, но вот краткий обзор:

Читать далее

Книга «Head First. Изучаем Swift»

Время на прочтение4 мин
Охват и читатели4.3K
image Добрый день, Хаброжители!

Swift известен как язык разработки приложений, выбранный компанией Apple для iOS, iPadOS, macOS, watchOS и tvOS. Но этим его применение не ограничивается. Swift с открытым кодом набирает популярность как язык системного программирования и программирования на стороне сервера, его используют и в Linux, и в Windows. С чего же начать?

«Head First. Изучаем Swift» охватывает все актуальные темы – от сбора и управления данными до повторного использования кода, построения нестандартных типов данных и структурирования программ и пользовательских интерфейсов в SwiftUI. Изучив Swift, вы будете готовы строить любые приложения – от мобильных и веб-приложений до игр, фреймворков, средств командной строки и многого другого.
Читать дальше →

Современный SwiftUI: общение родителей и детей

Время на прочтение9 мин
Охват и читатели1.4K

Преамбула

Этот пост в блоге является одним из серии. Обязательно прочитайте все части!

Modern SwiftUI: Parent-child communication

Modern SwiftUI: Identified arrays

Modern SwiftUI: State-driven navigation

Modern SwiftUI: Dependencies

Modern SwiftUI: Testing

На прошлой неделе мы завершили нашу амбициозную серию из 7 статей, посвященных современным передовым методам разработки SwiftUI. В этих эпизодах мы перестроили приложение компании Apple “Scrumdinger” с нуля (исходный код здесь), которое является отличной демонстрацией многих проблем, с которыми можно столкнуться в реальном приложении. На каждом этапе пути мы ставили перед собой задачу написать код максимально масштабируемым и ориентированным на будущее, в том числе:

Читать далее

Как ускорить Swift с помощью Conformances

Время на прочтение6 мин
Охват и читатели1.2K

В рантайме Swift выполняет проверку соответствия протоколу, когда вы приводите тип к протоколу, например, с as? или as!. Эта операция на удивление медленная, как подробно описано в моем предыдущем посте. В этой статье мы рассмотрим простой способ ускорить этот процесс примерно на 20%, не внося никаких изменений в ваш исходный код. А начнём с краткого обзора проверок соответствия протокола.

Читать далее

Создание пользовательских слоев в SwiftUI. LayoutValueKey

Время на прочтение3 мин
Охват и читатели911

В последние несколько недель мы рассмотрели многие аспекты создания пользовательских слоев с использованием нового Layout протокола в Swift UI, однако нам еще многое предстоит обсудить. На этой неделе мы узнаем, как использовать протокол Layout Value Key для передачи параметров пользовательских слоев при создании представлений в пользовательском слое.

Читать далее

Swift-код в качестве пользовательских команд LLDB

Время на прочтение6 мин
Охват и читатели1.8K

Если я спрошу, какую команду LLDB вы используете чаще всего, то я почти уверен, что вы, как и большинство iOS-разработчиков, ответите po. Но знали ли вы, что вы можете определить свою собственную команду LLDB, используя только Swift-код?

В этой статье я покажу вам, что нужно для создания собственной команды LLDB.

Читать далее

Получение доступа к командной строке из XCTest

Время на прочтение4 мин
Охват и читатели962

Командная строка — довольно мощный инструмент. Его можно использовать для автоматизации множества вещей здесь и там. Очевидно, речь идёт не только о сценариях Shell, из него можно запустить и любой другой инструмент. Но использовать его напрямую не всегда возможно.

XCTest, например, работает внутри песочницы, это означает, что вы буквально не можете даже высунуть нос из коробки. Ну, почти. Давайте обойдём это ограничение и узнаем, как получить доступ к командной строке из тестов.

Читать далее

Диспетчеризация методов в Swift

Время на прочтение3 мин
Охват и читатели28K

В разных языках программирования применяется механизм диспетчеризации методов (Method Dispatch), и все разработчики имеют с ним дело. Однако, не все это осознают и не все понимают, как этот механизм работает. Поэтому данная статья будет полезна всем разработчикам на Swift, которые хотят погрузиться глубже в диспетчеризацию методов и понять принципы ее работы, что в свою очередь позволит писать более эффективный код и избежать появления некоторых неочевидных проблем. Также статья будет полезна тем, кто в поисках работы – данный вопрос часто обсуждается на собеседованиях iOS разработчиков.

Давайте разберемся, что же такое диспетчеризация, рассмотрим ее виды и случаи применения.

Читать далее

Приглашаем на Ozon Tech Community Mobile Meetup

Время на прочтение2 мин
Охват и читатели1.5K

UPD: Добавили записи выступлений и слайды

Мы делаем приложения для всех — для покупателей, продавцов, курьеров и сотрудников пунктов выдачи заказов. И каждое чем-то уникально.

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

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

Читать далее

Advanced Data Protection для iCloud. Какое значение это имеет для Tact и других приложений, использующих CloudKit

Время на прочтение5 мин
Охват и читатели2.5K

В декабре 2022 года Apple объявила о новых мощных средствах защиты данных. Из трех объявленных средств защиты, iMessage Contact Key Verification относится к Сообщениям, следовательно, выходит за рамки этого поста.

Поговорим о двух других.

Читать далее

Что такое Unicode? Или как компьютеры работают с символами

Время на прочтение6 мин
Охват и читатели26K

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

Читать далее

Соотношение сторон и масштабирование изображений в Image компоненте

Время на прочтение8 мин
Охват и читатели4.1K

Давайте попробуем посмотреть за короткий промежуток времени как работает масштабирование в Image. Для, тем, кто пришел в SwiftUI из UIKit думает что система достаточно простая и все модификаторы понятны, но иногда это работает, не так, как вы ожидаете.

Читать далее

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

Pulse 3: что ты такое?

Время на прочтение7 мин
Охват и читатели2K

10 января 2023 г.

Сегодня моя 10-я годовщина программирования на платформах Apple, и что может быть лучше, чем отпраздновать это новым крупным выпуском — Pulse 3.0 вышел!

Мне нравился каждый год, когда я работал над iOS. Я начал в 2012 году с Objective‑C, и теперь, благодаря Swift и SwiftUI, я могу таргетировать все платформы Apple, что невероятно. Pulse 3 — это полная переработка. Он расширяет возможности и обеспечивает почти полное равенство функций между iOS, macOS, watchOS и tvOS с одной и той же кодовой базой.

Pulse — это сетевой логгер, созданный с помощью SwiftUI. Он интегрируется на URLSession уровне, позволяя ему видеть незашифрованный трафик и записывать метрики задач, доступные только на этом уровне.

Читать далее

NSPredicate: старый API с новыми сюрпризами

Время на прочтение4 мин
Охват и читатели2K

NSPredicate: старый API с новыми сюрпризами.

Недавно я работал с NSPredicate — API, который существует с момента выхода Mac OS X Tiger в 2005 году — и то, что выглядело довольно простым, не работало так, как я ожидал.

Я внедрял поддержку Apple Shortcuts в своем приложении для чтения, чтобы пользователи могли автоматизировать процессы взаимодействия. Я заметил, что при использовании EntityPropertyQuery, некоторые, основанные на свойствах, запросы статей не возвращали ожидаемое их количество. У меня было четырнадцать статей, сохраненных на симуляторе iPad. Четыре из них были написаны мной. Однако, когда я искал статьи, где автором был не «Дуглас Хилл», то вместо ожидаемых десяти, в результате получал лишь две.

Было ясно, что статьи не были включены в поиск, если не был указан автор статьи. Другими словами, когда свойство author было равно nil. (Я буду комбинировать термины nil и null, т.к. они представляют одну и ту же концепцию с разными именами в разных программных стеках.)

Читать далее

Три способа общения через WatchConnectivity

Время на прочтение5 мин
Охват и читатели1.9K

Продолжая свое путешествие с watchOS, я хочу выделить различные методы, которые у нас есть для связи между устройствами iPhone и Apple Watch. В течение последних недель я глубоко погрузился в WatchConnectivity и то, как его можно использовать для обмена данными. Этот пост должен дать обзор моих выводов и помочь выбрать правильный метод для данного варианта использования.

Читать далее

Разработка iOS Framework в унисон с помощью Swift и Objective-C

Время на прочтение11 мин
Охват и читатели2.4K

Прошло много времени с тех пор, как язык программирования Swift был представлен на WWDC в 2014 году. С тех пор внедрение Swift сторонними разработчиками, безусловно, было массовым. Тем не менее, Objective-C всё ещё существует.

В этом посте мы предоставим несколько советов и приёмов для успешной разработки XCFrameworks (новые способы упаковки и поставки библиотек в различных вариантах). XCFrameworks сочетают Swift и Objective-C таким образом, чтобы совместимость языков не ставила под угрозу публичные API-интерфейсы фреймворка и не влияла на них.

Читать далее

Как ускорить разработку и тестирование в SwiftUI с помощью PreviewSnapshots

Время на прочтение8 мин
Охват и читатели2.1K

Как ускорить разработку и тестирование в SwiftUI с помощью PreviewSnapshots.

Одной из замечательных особенностей разработки в SwiftUI является Xcode Previews, которые обеспечивают быструю UI‑итерацию путем визуализации изменений кода в режиме реального времени наряду с кодом SwiftUI. 

Читать далее

Настройте 3D-шахматную доску с помощью SwiftUI и RealityKit

Время на прочтение6 мин
Охват и читатели1.5K

Использование фреймворков SwiftUI, RealityKit, ARKit и Multipeer

Я провел большую часть этого года (2022), изучая SceneKit. Путешествие, которое я задокументировал почти двумя дюжинами статей на эту тему, вы найдёте здесь, на Medium. Изучив большинство элементов в SceneKit, я решил перейти на RealityKit/ARKit в 2023 году.

Я не был уверен, с чего начать, поэтому я смотрел последние презентации WWDC2022 на ARKit, а затем на RealityKit, ну и — это не помогло. Я посмотрел, что было вначале, а затем самый ранний WWDC.

Читать далее

Связный список в Swift

Время на прочтение10 мин
Охват и читатели8.1K

Сегодня мы поговорим, что такое связный список, что делает его таким особенным, как он работает, чем он отличается от обычного массива (о котором я подробно писал в прошлой статье), и попутно мы увидим, как связные списки хороши для решения определенного класса задач.

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

Читать далее