Как стать автором
Обновить
7.35

Xcode *

Интегрированная среда разработки ПО

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

Разбираем iOS-приложение: код, сборка, статические и динамические библиотеки, компиляция, запуск

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

Больше всего мне нравится изучать процессы мобильной разработки, включая самые низкоуровневые вещи. Из чего состоит iOS-приложение? Какие этапы оно проходит перед тем, как оказаться на устройстве пользователя? Что такое Executable binary? Что происходит внутри препроцессора?

Если вам, как и мне, интересно разбираться в Computer Science для iOS, приглашаю под кат. Разберём первые, самые базовые понятия, которые касаются любого iOS-приложения. Статья поможет тем, кто хочет двигаться дальше, кому интересен IT мир, и кто по каким-то причинам ещё не приступил к изучению подобного материала.

Читать далее
Всего голосов 20: ↑20 и ↓0+23
Комментарии1

Новости

История одного модального окна или переходим с UIKit на SwiftUI. Часть 3. ProgressView vs SkeletonView

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

Продолжаю эпопею с модальными экранами на SwiftUI. Но сегодня больше кода. Была задача, сделать ProgressView и SkeletonView. Вдруг кому-то пригодится, показываю.

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

Читать далее
Рейтинг0
Комментарии2

Малоизвестные фичи SwiftUI

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

Я уже 2 месяца прохожу обучение в онлайн‑школе и у нас на этой неделе был открытый урок, нужно было подготовить доклад на тему «Малоизвестные фичи или особенности языка Swift»

Так вот — я решила погуглить этот вопрос, подготовилась, написала код. Но когда дело дошло до самого выступления, оказалось, что говорить ртом — это не так‑то и просто. Да и в целом выступать, даже в Zoom.

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

Читать далее
Всего голосов 2: ↑2 и ↓0+5
Комментарии4

Макросы в Swift: Практическое руководство по использованию

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

Недавно я столкнулся с задачей, которая требовала написания большого объема шаблонного кода. Вспомнив, что в Swift 5.9 появились макросы, созданные специально для генерации шаблонного кода, я решил попробовать их в действии. Ранее я работал с макросами в Objective-C и C++, поэтому ожидал увидеть нечто похожее. Однако, поискав информацию, я понял, что макросы в Swift — это совсем другое, не похожее на то, что я встречал в других языках.

В отличие от макросов в C++ или Objective-C, в Swift нужно писать гораздо больше кода, соблюдая при этом строгие правила оформления. Иначе можно столкнуться с загадочными ошибками компиляции, решение которых не всегда очевидно. Дополнительные трудности возникают из-за того, что многие статьи и видео просто повторяют официальную документацию, не объясняя понятным языком, как именно использовать макросы. Часто вместо этого начинаются сложные рассуждения о структуре AST (Abstract Syntax Tree) или приводятся примеры кода, которые демонстрируют результат работы макроса, но не показывают, как его создать и отладить.

Именно из-за таких трудностей я решил написать эту статью. Её цель — максимально просто, без углубления в теорию, объяснить, как можно уже сегодня начать использовать макросы в Swift. Если вам захочется изучить эту тему подробнее, вы всегда сможете обратиться к официальной документации или материалам с WWDC, где этот вопрос разобран более детально. А если вам понравится моя подача, пишите в комментариях — я постараюсь объяснить сложные моменты в отдельных статьях.

Читать далее
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Истории

История одного модального окна или переходим с UIKit на SwiftUI. Часть 2.1. Неожиданный баг Combine

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

В этой статье изначально планировала написать продолжение первой части статьи. А именно показать обещанные ProgressView и SkeletonView. Но тут на моём пути возникло неожиданное препятствие.

Обо всём по порядку.

Мы же понимаем, что просто так оставить View со всем функционалом внутри нельзя. Обычно я накидываю быстрый функционал и UI в одном классе, а затем уже разделяю. Использую MVVM архитектуру. И модальное окно не стало исключением. Проверив, что всё работает во View, я создала ViewModel, сделала её ObservableObject

Читать далее
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

История одного модального окна или переходим с UIKit на SwiftUI. Часть 1

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

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

Читать далее
Всего голосов 4: ↑4 и ↓0+6
Комментарии8

Быстрый доступ к VPN в iOS с помощью App Intents

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

Привет! Меня зовут Антон Долганов, я iOS-разработчик в компании Контур. Я работаю над инфраструктурными модулями и параллельно поддерживаю наше приложение Контур.Коннект, которое используется для подключения к внутреннему VPN и даёт доступ к корпоративным сервисам.

Недавно мы выпустили обновление Коннекта, добавив поддержку Быстрых команд (Shortcuts). Теперь можно включать и отключать VPN, даже не заходя в приложение. В этой статье я расскажу, как я это реализовал и почему это полезно.

Читать далее
Всего голосов 7: ↑7 и ↓0+10
Комментарии0

От Cocoapods к Tuist+SPM быстрыми шагами

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

Не так давно прогремела новость, что Cocoapods переходит в режим поддержки, больше не будет развития, а только поддержка. В связи с этим встал вопрос, что дальше. В начале мы склонялись к чисто Swift Package Manager, но потом пришло понимание, что неплохо было бы уйти от конфликтов в project файле и сделать задел на модульность. В этой статье постараюсь описать полный путь от Cocoapods к Tuist+SPM, затрону то, что было мне было не понятно в других статьях и передать опыт, чтобы облегчить другим переход.

Читать далее
Всего голосов 2: ↑2 и ↓0+4
Комментарии4

Performance Testing для iOS

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

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

Но как мы можем отслеживать и мерить метрики скорости нашего приложения? Этим вопросом задаются многие разработчики и компании, которые получили негативную реакцию или думают наперед, когда кодовая база и сложность приложения будет расти. Существует два пути: либо мы изучаем на реальных пользователях нашего приложения, либо мы ищем какой-то другой способ, который позволяет нам статистически проверить гипотезу.

Читать далее
Всего голосов 5: ↑5 и ↓0+7
Комментарии2

Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime

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

Всем привет! Меня зовут Фарид, я занимаюсь iOS-разработкой в компании Банки.ру.

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

В нашем проекте ставка сделана на использование SwiftUI, что затрудняет решение задачи: из-за декларативности подхода и отсутствия явно выраженного жизненного цикла в UI, обнаружить причину утечки памяти сложнее. 

В этой статье мы: 

1) пройдёмся по основным подходам к поиску утечек; 
2) попробуем найти способ сделать его обнаружение утечек менее болезненным;
3) выясним, можно ли каким-то образом застраховаться от утечек в будущем развитии проекта.

Читать далее
Всего голосов 14: ↑14 и ↓0+22
Комментарии18

Что нового в Swift 6?

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

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

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

Читать далее
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Пермишены (permissions) для тестировщика: зачем нужно, что такое и как с этим работать

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

Приветствую👋

В тестировании, особенно мобильном, существуют специфические области приложений, которые не всегда тестируются «вдумчиво» в силу своей необычности. Одна из таких областей — это разрешения или, как их принято называть, permissions (пермишены). Всё чаще я сталкиваюсь с ними в работе , на собеседованиях и в различных тренажерах по тестированию, поэтому решил погрузиться и более детально рассмотреть эту необычную и по-своему интересную часть мобильных приложений.

Меня зовут Антон, я QA Mobile в компании MobileUp. В статье я разберу, что такое пермишены, для чего нужны, какие виды существуют, где их можно найти и как тестировать.Эту статью я пишу исключительно с точки зрения ручного тестирования, но в конце текста оставлю интересные ресурсы, которые могут пригодиться для QA Auto (но это не точно 😄).

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Как я делаю build больших Android/iOS проектов со 128 GB памяти на старом Mac

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

Наверняка вы не раз сталкивались с проблемой нехватки памяти на вашем ПК при билде проектов? Недавно мне стало не хватать основной памяти на диске, где установлена система MacOS. Решением проблемы послужило приобретение внешнего SSD диска. Как же настроить работу билдов Android и iOS на внешнем диске и перенести все проекты и приложения? Об этом и пойдет речь в этой статье. Приятного чтения!

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии22

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

Автоматизация тестирования: мой опыт

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

Приветствую!

Я – QA-инженер и мы разрабатываем медицинское приложение. В этой статье я хочу поделиться своим опытом внедрения автоматизации тестирования.

Читать далее
Всего голосов 8: ↑3 и ↓50
Комментарии2

Оплата аккаунта Apple Developer в 2024 году

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

В этой статье я приведу примеры по оплате аккаунта разработчика Apple которые я сам лично попробовал. Информация приведенная ниже достаточно актуальная и затрагивает период конца 2023 и начала 2024 года.

Читать далее
Всего голосов 8: ↑3 и ↓50
Комментарии0

Быстрый старт, или Как ускорить запуск iOS-приложений

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

Всем привет! Меня зовут Фируза, я iOS-разработчик в компании SimbirSoft. В этой статье мы попробуем разобраться, как ускорить запуск приложения, а именно:

что происходит от момента нажатия на иконку приложения до представления возможности пользователю взаимодействовать с UI;

как собрать актуальные метрики скорости запуска и отзывчивости приложения; 

какие тактики применить, чтобы ускорить старт и отзывчивость запуска.

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

Ускориться ?
Всего голосов 7: ↑7 и ↓0+7
Комментарии5

Cocoapods pod install без интернета на CI при использовании Tuist

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

Для успешного выполнения команды pod install менеджера зависимости Cocoapods нужен доступ в интернет, но на раннерах в целях безопасности для continuous integration может отсутствовать сеть. В некоторых случаях, например, при использовании инструмента Tuist в проекте, исполнение pod install на CI необходимо для интеграции Подов в проекты. В этой статье рассмотрим, как можно легко с помощью нескольких команд возобновить успешное выполнение команды pod install на раннерах без выхода в интернет.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии4

Упрощаем локализацию iOS-приложения со String Catalogs

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

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

Сегодня я расскажу о том, как можно в значительной мере облегчить и усовершенствовать процесс перевода iOS-приложения на другие языки. Языки, разумеется, человеческие: от Swift мы отказываться не будем.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии3

Листаем цифровые страницы: UIPageViewController

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

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

Сегодня я хочу поделиться кратким и простым руководством о том, как просто и программно реализовать UIPageViewController. Итак, что же мы получим в итоге?

Читать далее
Всего голосов 6: ↑4 и ↓2+4
Комментарии1

Дебаггинг приложения без Xcode. Зачем?

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

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

Привет, меня зовут Владимир Петров, я iOS разработчик в Альфа-Банке. Я вам расскажу как мы сделали свой дебаг-инструмент и научились дебажить наше приложение без Xcode. Обратите внимание на статью, если думали над тем, чтобы делать свое решение или готовое — расскажу, какая там может быть функциональность.

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии10
1
23 ...