Все потоки
Поиск
Написать публикацию
Обновить
61.77

iOS *

Мобильная ОС компании Apple

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

KMP глазами iOS-разработчика

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров14K

Привет! Меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS.

Мы в мобильной команде для шаринга кода на несколько платформ используем KMP. 

На Хабре можно встретить достаточное количество статей по этой технологии, но большинство из них рассматривает выбор кроссплатформенной технологии либо перевод проекта на KMP.

В этой статье я расскажу наш опыт взаимодействия с KMP со стороны iOS-разработки: проблемы, с которыми столкнулись, их решение, наш подход, и главное — как к этой технологии относятся iOS-разработчики.

Читать далее

Встроенные покупки в iOS. Часть 1: создание покупок и добавление их в проект

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

Сергей Журавель | 22 ноября 2022 г.

Встроенные покупки в iOS. Часть 1: создание покупок и добавление их в проект

Читать далее

Превратности диспетчеризации в Swift

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4K

Всем привет, меня зовут Сергей, я работаю в компании Joy Dev в должности iOS TeamLead. Эта статья - моя “проба пера” на Хабре. В ней, вместе с обзором видов диспетчеризации в Swift, мы рассмотрим несколько примеров, когда реализация методов в extension может вести себя неожиданным образом. Итак.

Читать далее

Мобильная разработка за неделю #475 (6 — 12 февраля)

Время на прочтение3 мин
Количество просмотров3.2K
В этом выпуске ускорение Swift и первый релиз Android 14, собеседование и тестирование, спрос на мобильных разработчиков, приложения для здоровья и фитнеса, прелести legacy-кода и многое другое.

В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

Читать дальше →

Элемент выбора эмодзи (aka EmojiPicker) для iOS как в MacOS

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.8K

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

Читать далее

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

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

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

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

Читать далее

Участвует ли Apple в современной ИИ-революции?

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров6.7K

Недавно прочитал статью "Apple, а что случилось? Нейросети уже меняют мир, а в Купертино молчат" - где обсуждаются некоторые следствия ИИ-революции, которую произвёл в последние пару месяцев чат-бот ChatGPT. Что Google в панике ввела «красный код» и пытается показать результаты своих многолетних ИИ-разработок. Что Microsoft моментально вложила миллиарды долларов в проект OpenAI и уже представила новую версию поисковой системы Bing с ИИ на базе чат-бота ChatGPT.

Также широко известно, что кроме Google и Microsoft, такие крупные корпорации как Meta Platforms, Amazon, IBM, Intel, Nvidia вкладывают большие деньги в развитие ИИ-технологий и время от времени не стесняются об этом рассказывать. А вот компания Apple вроде бы как со стороны наблюдает за всей этой вакханалией и пока не лезет в эту драку.

Но это вовсе не так. И я хотел бы с вами обсудить участие компании Apple в зарождающемся рынке ИИ-сервисов и приложений.

Читать далее

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

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

Преамбула

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

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.1K

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

Как установить 2GIS на iPhone в 2023 без танцев с бубном (почти)?

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

В этой короткой статье я рассказываю, как удалось вернуть одно из удаленных из AppStore приложений на новый телефон.

Ну и как?

Мобильная разработка за неделю #474 (30 января — 5 февраля)

Время на прочтение4 мин
Количество просмотров2.4K
В новом дайджесте много интересного — масштабирование изображений, сокращение времени запуска, проблемы в виджетах и их решения, проблемы бережливых стартапов и многое другое!

В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

Читать дальше →

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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 мин
Количество просмотров1.6K

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

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

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

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

Читать далее