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

iOS *

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

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

Четыре платформы — один код. Что такое Compose Multiplatform?

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

Разработчики давно грезили о возможности писать кроссплатформенный код — такой, который запускался и работал бы одинаково в любой операционной системе любой архитектуры. Сегодня принципом «Write once, run anywhere», когда-то прогремевшим в связи с появлением языка Java, трудно кого-либо удивить. И все же есть ниша, в которой не так много кроссплатформенных технологий: это UI-разработка.

Не будет преувеличением сказать, что на сегодняшний день есть только два UI-фреймворка, которые позволяют запускать один и тот же UI на разных платформах и широко представлены на рынке: React Native и Flutter. Казалось бы, чего еще желать? Сразу две технологии предоставляют возможность шарить UI-фичи между платформами и прекрасно с этим справляются. Но эта статья — не о них, а об их младшем собрате, удобном и мощном инструменте мобильной и десктопной разработки — Compose Multiplatform.
Читать дальше →

GptGram — приложение для создания контента, на базе ИИ OpenAI GPT-4 и Midjourney V5

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

Не знаю как вы, но я часто испытываю трудности в создании увлекательного контента для своей страницы в Instagram. Я долго подбираю слова с которых хотел бы начать, собираю дополнительную информацию, чтобы насытить пост содержанием. Иногда одна только мысль о том, что надо что-то написать, вгоняет в уныние и усталость. Это я еще не говорю про то, что надо подобрать качественный и уникальный визуал. В общем, я тоже подсел на волну вау эффекта от ChatGPT и Midjourney, и решил разработать некий инструмент, который позволил бы мне создавать контент для Instagram от моего лица быстро и просто, а также желательно в одном месте и всегда под рукой. Собственно, о том что получилось дальше и пойдет речь.

GptGram — iOS приложение. Это персональный помощник в создании контента для Instagram, работающего на базе передовых технологий искусственного интеллекта: OpenAI GPT-4 для генерации текста и Midjourney V5 для создания изображений.

Читать далее

Готовим наши приложения к Swift 6

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

К сожалению, как нам пояснил Дуг Грегор (Doug Gregor) из Swift Language Workgroup, Swift 6 все-таки не успеет увидеть свет в 2023 году. Но знали ли вы, что Apple уже зарелизила некоторые части Swift 6 в версии 5.8? Да, вы не ослышались. Эти части нового Swift поставляются с Xcode 14.3, но они по умолчанию отключены. Они заработают сразу после выхода Swift 6, что может занять еще один год или даже больше.

Эти фичи вносят ряд критических изменения в Swift, в основном из-за переименования общеизвестных API, корректировки их поведения и добавления новых проверок безопасности в компилятор. Все это в какой-то момент будет активировано с целью помочь улучшить нашу кодовую базу. И нам обязательно придется обновлять наши проекты, чтобы они не поломались из-за этих изменений.

Я решил, что было бы неплохо включить все фичи в моих текущих проектах уже сейчас, чтобы увидеть, есть ли в моей кодовой базе какие-либо критические изменения, о которых мне следует позаботиться. И, конечно же, таким образом я бы смог попробовать некоторые новые фичи, такие как BareSlashRegexLiterals, что дает нам возможность краткой инициализации регулярных выражений с помощью литерального синтаксиса  (/.../).

К счастью, в Swift 5.8 есть легкий универсальный способ активировать все эти опции: нам просто нужно передать в Swift флаг -enable-upcoming-feature, прописав его в OTHER_SWIFT_FLAGS настройках сборки нашего проекта в Xcode. А также нам нужно знать, какие именно фичи нам доступны, но я не смог найти хорошего комплексного обзором (по крайней мер пока). Предложение, в рамках которого был добавлен этот унифицированный способ активации, содержит такой список, но он не обновляется более новыми опциями, добавленными позже, как, например, в SE-0384. Так где же мы можем получить достоверный актуальный список всех поддерживаемых опций?

Читать далее

Мобильная аналитика в hh.ru и не только

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

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

Читать далее

Swift async/await на примерах

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

В предыдущей части мы разобрали преимущества работы с async/await по сравнению с GCD. В этой части мы более подробно рассмотрим ключевые слова async и await (и не только). Разберемся в том, как они работают, что означает "неблокирующее ожидание" и самое главное рассмотрим это все на примерах.

Читать далее

Как стать iOS-разработчиком?

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

Привет! На связи KTS и наш эксперт по направлению iOS-разработки Александр.

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

Насколько востребована позиция iOS‑разработчика на рынке РФ, какие риски с выбором этого направления для старта карьеры наиболее актуальны, что именно надо изучать и где искать нужные материалы — в этой статье.

Читать далее

Мобильная разработка за неделю #487 (1 — 7 мая)

Время на прочтение3 мин
Количество просмотров2.9K
В новом выпуске обучение iOS-разработке и цена управления памятью, правила дизайна и гниение кода, бэкенд, мобилки, ремесло, гвозди, зоопарк трансформеров и многое другое.

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

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

Swift Power Assert

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

Power asserts (также известные как диаграммированные утверждения) дополняют ваши ошибки утверждений информацией о значениях, полученных во время оценки условия, и представляют ее в легко усваиваемой форме. Power asserts являются популярной функцией Spock (а позже и всего языка Groovy независимо от Spock), ScalaTest и Expecty.

Power asserts предоставляют описательные сообщения об утверждениях для ваших тестов, подобные следующим примерам:

Читать далее

Из дальнобойщика — в IT: приключение, где нужно быстро учиться и работать без выходных

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

63 часа работы в неделю, три выходных за полгода и подвешенное состояние гастарбайтера: меня зовут Мустафа Бекиров, мне 23 и я вкатываюсь в IT. Работаю дальнобойщиком 1,5 года, а в перерывах между грузами почитываю Хабр. Никогда официально не учился на программиста, но полгода назад всё-таки смог прорваться в IT, стал разработчиком под iOS, и пока полёт нормальный. Решил рассказать свою историю. Может, кому-то она будет полезной или интересной.

Отправиться в приключение

CoreData для базовых задач одним методом

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

Когда на iOS возникает вопрос о какой-то оффлайн работе, часто разработчики обращают свой взор на CoreData — фреймворк, который управляет хранением данных в приложении. В идеальном мире использование CoreData сводилось бы к нахождению необходимых объектов, их изменению и вызову метода сохранения без головной боли. 
Однако, фреймворк имеет высокий порог входа и много неочевидных моментов, которые обязательно всплывут при масштабировании приложения. Но насколько можно приблизиться к тому идеальному миру, обрисованному ранее? В этой статье я поделюсь своим опытом работы с CoreData, и предложу решение, упрощающее работу с ней практически до вызова одного универсального метода для базовых нужд изменения и сохранения данных, попутно рассказав, какие фишки CoreData рассматривались как вариант достижения этой цели.

Читать далее

React Native vs нативные языки программирования: что выбрать бизнесу?

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

Современные технологии – это истинное благо для любого бизнеса. Но точно так же они могут стать самым настоящим проклятьем. Только представьте. Вы захотели создать собственное мобильное приложение. Идея уже есть, спонсоры найдены, и, казалось бы, выпускай себе приложение и покоряй им мир стандартными «Efficiency, Resilience and Innovation • Trust • Human-Centered approach • Passion • Excellence». Но в действительности все оказывается куда сложнее. Вы приходите к специалистам и не понимаете, кого слушать. Одни наперебой убеждают вас, что приложение стоит сделать на технологии React Native, а другие упорно доказывают, что нет лучшего решения, чем разработка на Swift/Kotlin. Звучит знакомо? Тогда эта статья точно вам поможет.

Читать далее

Как я разрабатывал кастомный Segmented Control на SwiftUI

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

Системный Segmented Control - это хорошо и удобно. Но когда доходит до его кастомизации, проще написать свой гибкий компонент с нуля. В этой статье история разработки своего segmented сontrol'а, переросшего в отдельную внешнюю зависимость, с ожидаемыми и не очень сложностями.

Читать далее

Мобильная разработка за неделю #486 (24 — 30 апреля)

Время на прочтение4 мин
Количество просмотров2.6K
В нашем новом дайджесте подготовка к собеседованию и оптимизация для сетевой доступности, тестирование с Robolectric и “подводные камни” Jetpack Compose, плохие MVx архитектуры и даже конец программирования, каким мы его знаем.

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

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

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

Управляем воспроизведением на Mac OS через быстрые команды iOS

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

Хочу поделиться довольно простым, но как показало время, полезным способом управления медиаклавишами macOS из быстрых команд (например iOS), без дополнительных клиент-серверных приложений. Управление происходит с помощью вызова скрипта на python по ssh. Для имитации нажатия медиа клавиш использована библиотека pyobjc-framework-Quartz.

Читать далее

Почему MVx архитектуры всегда получаются плохо

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

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

Я познакомился с понятием “архитектурные паттерны” и MVC в частности еще в 2012, и с тех пор заболел идеей архитектур программного обеспечения. Я восхищался людьми, которые пишут архитектурные фреймворки. Я тратил дни и недели читая их исходники и просматривая видео на YouTube. Но чем больше я в это погружался, тем больше я чувствовал себя в состоянии, которое я называю “начинающий иллюзионист”: пока смотришь на фокусы - это магия, но когда начинаешь их делать, то они становятся банальными.

За годы я попробовал разные существующие паттерны и фреймворки, на разных языках и в разных проектах. Какие-то реализации я писал с нуля, с какими-то знакомился в чужих проектах, но почти каждый раз упирался в их несовершенство. И каждый раз это было очень болезненно. И вот я думал, что в следующий раз все сделаю правильно, но опять что-то шло не так. Тогда я решил разобраться в этом вопросе и сделал своей миссией поиск того самого подхода, который имеют ввиду, когда говорят “нормально делай - нормально будет”.

Нашел ли я его? Возможно. По крайней мере мне есть что показать, но об этом в другой раз.

В своих скитаниях я нашел кое-что не менее интересное: причину почему MVx всегда получается плохо. И вот об этом и пойдет речь сегодня.

Читать далее

Модульное тестирование в iOS: всё, что надо знать. Часть 1

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

Модульное тестирование в iOS: все, что надо знать. Часть 1

Тестирование — один из основных способов выявления проблем в коде для их быстрого устранения и снижения издержек. В большинстве случаев при организации контроля качества лучше задействовать сразу несколько вариантов автоматизированного тестирования — тестов одного вида для проверки целого приложения или его большого компонента недостаточно.

Меня зовут Евгений Плёнкин. Я iOS разработчик компании СберЗдоровье. В этом материале я расскажу, что такое автоматизированное тестирование, в чём его польза в iOS-разработке и не только, сколько и каких тестов должно быть, а также какой инструмент для автотестов в iOS есть.

Статья написана в рамках серии «Модульное тестирование в iOS: все, что надо знать».

Читать далее

Хочу в iOS-разработку: к чему готовиться на собеседовании в продуктовую команду

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

Привет! Я Серёжа Копытов, iOS TechLead. Веду собесы с 2020 года, многие разработчики и техлиды в команде прошли через меня. Уже через полгода интервью я активно включился в настройку подбора и сейчас основное время занимаюсь его развитием.

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

Читать далее

Виджеты: Android против iOS

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

Долгое время виджеты были отличительной чертой Android, пока на айфонах царили стройные ряды одинаковых иконок. Но в 2020-м они масштабно пришли и на iOS. Обычно мобильные разработчики знают одну из этих платформ, но у Анны Жарковой (@anioutka) есть опыт работы с обеими — и она выступила у нас с докладом о виджетах на обеих.

Сейчас мы готовим конференцию Mobius 2023 Spring, где также освещаются обе платформы, а Анна выступит с новым докладом. И в ожидании этого решили сделать для Хабра текстовую версию доклада о виджетах (видеозапись также прилагаем). Далее — текст от лица спикера.

Читать далее

Правильная поддержка Apple Silicon: как избежать проблем при апгрейде с Intel (x86_64) на Apple (arm64)

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

Инженеры Apple придумали прекрасные по быстродействию и производительности процессоры Apple Silicon (M1, M1 Max и так далее) на архитектуре arm64. Но за полученное быстродействие разработчикам пришлось платить своим временем.  

Рассказываем, к каким проблемам мог привести апгрейд рабочего мака и что нужно учитывать с изобретением процессоров Apple Silicon.

Статья вдохновлена ограничениями в недавно вышедшем Xcode 14.3: запуск из-под Rosetta в нём стал deprecated.

Читать далее

Combine: часть 2. Вершина айсберга

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

Привет, Хабр! На связи Сергей, iOS-разработчик в компании SimbirSoft.

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

Интеграция Combine в проект будет полезна для обеих сторон — бизнеса и команды разработки:

1. Процесс работы становится быстрее, а значит дешевле.

2. Фреймворк считается достаточно модным. Есть большое количество разработчиков, которым нравится использовать реактивный подход, и которые хотят поработать с новым инструментом — повышается интерес соискателей к вакансиям, в которых фигурирует эта технология.

3. Combine способствует легкой поддержке и удобном переходе на современные технологии в будущем (например, на SwiftUI).

Читать далее