Обновить
52.95

iOS *

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

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

Участвует ли 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 мин
Количество просмотров769

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Ну и как?

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

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

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

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

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

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

В разных языках программирования применяется механизм диспетчеризации методов (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, т.к. они представляют одну и ту же концепцию с разными именами в разных программных стеках.)

Читать далее

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

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

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

Читать далее

Как устроена бесшовная авторизация в онлайн-кинотеатре

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

Привет, Хабр! На связи Ваня Семенков из МТС Digital и команда продукта МТС ID, мы отвечаем за продуктовую вертикаль авторизации в онлайн‑кинотеатре KION. Наша цель — увеличивать% авторизованных пользователей, поэтому в этой статье мы расскажем, какие способы авторизации применяются в KION, разберем их плюсы и минусы, заглянем «под капот». А еще поговорим о том, как бесшовная авторизация повлияла на воронку C0.

Читать далее

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

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

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

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

Читать далее

Поиск callback-ов кнопок в рантайме iOS

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

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


В данной статье будет рассказано как узнать какой callback будет вызван при нажатие кнопки в интерфейсе iOS приложения с использованием фреймворка frida.


Также я думаю эта статья будет полезна тем разработчикам на iOS кто хочет знать как работает внурянка cllaback-ов графических элементов.


Для нетерпеливых конечный скрипт тут.

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее