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

Разработка под iOS *

Популярная мобильная ОС

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

Swift TableManager

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

В этой статье хотел бы описать то, как устроена работа с UITableView на наших проектах в компании.

К данному подходу мы пришли в процессе унификации и поиска наиболее удобного решения для работы с таблицами.

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

Читать далее

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

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

Меня зовут Ексей Пантелеев, я 12 лет программирую мобильные приложения, а всего зарабатываю программированием почти 20 лет и как профессионал пережил несколько платформ (например Flash Player, AIR, Stage3D), под которые я разрабатывал приложения. До мобайла я делал веб и игры, настраивал и создавал с нуля 2D и 3D движки. 

Когда платформа погибает, вакансий становится мало, и остается пару лет подумать куда идти. С какого-то момента я стал заранее анализировать куда пойдет платформа, на которой я зарабатываю деньги. Мобильные приложения это растущий рынок: за 2021 пользователи потратили в 142 млрд. долларов в App Store (92B $) и Google Play (50B $) на цифровые сервисы. Сегодня регуляторы вынуждают магазины приложений добавлять сторонние платежные сервисы, что создает хорошую перспективу для развития индустрии. Я преподаю разработку под iOS 8 лет, и в своих поздних авторских курсах мне уже удается прогнозировать рынок на несколько лет вперед и заранее готовить студентов к технологическому стеку, который будет востребован в будущем.  

Хочу не просто рассказать про тренды, а проанализировать, какой технический стек будет важен на первых этапах развития ниши.

Читать далее

iOS Community Meetup: видео и материалы встречи

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

Первый открытый митап iOS Community: приглашаем 2 февраля слушать интересные доклады и вовлекаться в дискуссии! Поговорим про Dependency Injection, подход async/await в задачах с многопоточностью и snapshot-тестирование.

Под катом — видео митапа и презентации спикеров :)

Читать далее

GraphQL в мобильной разработке. Пишем клиент для iOS

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


Доброго времени суток! С вами Анна Жаркова, ведущий разработчик компании Usetech, и мы продолжаем нашу серию статей, посвященных работе с технологией GraphQL  при разработке мобильных приложений.

В предыдущих частях мы говорили о подготовке облачного GraphQL бекенда на Hasura и подключении GraphQL API к Android клиенту. Теперь настал черед iOS мобильного приложения.

Для работы нам понадобится библиотека Apollo GraphQL для iOS:

www.apollographql.com/docs/ios

github.com/apollographql/apollo-ios

Наше приложение абсолютно аналогичное Android и включает в себя такие же по функционалу экраны:

— вход

— регистрация

— лента постов

— экран создания и редактирования поста

— экран с информацией о текущем пользователе.

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

Эволюция UI-тестов в iOS-приложении

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

Test-driven development — по-прежнему спорная тема. Часто встречается обоснованное, в общем-то, мнение, что такая разработка нужна только большим компаниям, потому что только у них достаточно ресурсов для создания и поддержки большого количества тест-кейсов. Но сегодня на примере iOS-приложения Маркета я покажу, что стремление как раз обратное: хочется, чтобы тесты поглощали как можно меньше времени разработчиков.

Меня зовут Даша, работаю в команде iOS-разработки Яндекс.Маркета. Два года назад мы поняли, что без автотестов нам тяжело: с их помощью мы снизили вероятность крешей после релиза и ускорили регрессионное тестирование. Релизы приложения происходят еженедельно, и это большая нагрузка на тестировщиков и разработчиков — протестировать всё руками и быстро внести правки за несколько дней не получилось бы. Я постараюсь порефлексировать и рассказать, как эволюционировал наш подход к UI-тестам за это время, и, более конкретно, какие работы мы провели для их «улучшения»: почему решили избавиться от JSON-моков и как справились с этой задачей.
Читать дальше →

Soviet Project — Хоррор игра о недалеком прошлом

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

Однажды я долго искал интересные 3D игры в Play Market и к своему сожалению не нашел почти ничего интересного.

Графика этих игр была слишком простая, освещение ужасное, текстуры слишком мыльные. Некоторые игры даже не дотягивали по качеству до игр для компьютеров и консолей 2000ых годов.

Мне показалось странным, сейчас в мобильные телефоны устанавливают мощные графические процессоры, а качество графики сомнительное.

Читать далее

Как проходит интервью мобильных разработчиков в Тинькофф

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

Привет! Я Максим Коробов, руководитель отдела разработки мобильного приложения Тинькофф. В статье расскажу о том, как проходит отбор кандидатов на вакансии разработчиков iOS и Android, что спрашивают на первичном и техническом интервью и какие задачи предлагают решать во время практической секции. 

Материал будет полезен разработчикам, которые ищут точки роста, интересуются проектами в крупных компаниях или хотят работать именно в Тинькофф. Если это про вас, не переключайтесь. 

Читать далее

Flutter vs Native: почему мы переходим с первого на второй

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

Привет, Хабр! Меня зовут Сергей, я занимаюсь мобильной разработкой 13 лет и недавно стал руководителем разработки мобильного приложения «Пункты выдачи заказов» в Ozon. Невольно став сместителем существующего строя в проекте (фреймворки, технологии, подход), я стал часто слышать вопрос: «Почему вы отказались от Flutter?».

Слышал я этот вопрос прежде всего от разработчиков моей команды и соискателей на наши вакансии, потом во время доклада на эту же тему на конференции Panda Meetup, в конце концов, даже менеджер нашего проекта подошёл с вопросом: «Ну а всё же почему?». Настолько людей захватывает эта тема, что я решил поделиться развёрнутым ответом.

Читать далее

Дайджест интересных материалов для мобильного разработчика #429 (24 — 30 января)

Время на прочтение4 мин
Количество просмотров2.5K
В новом дайджесте трудности перевода приложений и импакт-анализ, Force Update и тренды Android-разработки, шрифты в играх и история игрового композитора, экраны загрузки, использование приложений, GitHub Actions и многое другое!

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

Развитие способностей коллекций в Swift (на примере функции suffix)

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


Протоколы иерархии Sequence/Collection имеют одно из самых важных значений в Swift, начиная со встроенности в язык (например, конструкция цикла for in) и заканчивая популярными функциями высшего порядка mapreduce и т.п. Часто разработчики путаются в особенностях, не осознавая возможности, предоставляемые отдельными протоколами иерархии коллекций. Давайте попробуем разобраться с этими особенностями на примере одной функции, которая по разному реализуется в этих протоколах — функция suffix. Функция suffix возвращает массив из заданного количества элементов взятых с конца последовательности. Мы рассмотрим работу этой функции на основе реализации по умолчанию у протоколов SequenceCollectionBidirectionalCollection и RandomAccessCollection. Все эти протоколы последовательно наследуются друг от друга и на каждом уровне наследования добавляются новые возможности начиная с примитивного последовательного доступа и заканчивая прямым индексным доступом за время O(1).

Читать далее

Идентификаторы элементов в XCUITest

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

Меня зовут Семен, я занимаюсь автоматизацией тестирования мобильных приложений в hh.ru, и сегодня я расскажу о том, как писать автотесты под iOS. 

Быстрые регрессы, низкий time-to-merket, счастливые пользователи, у которых нет багов — для всего этого нам нужны автотесты. Наше мобильное приложение работает сразу на двух платформах, и мы пишем автотесты для каждой из них. 

Затестить

15 стран, 9 языков: трудности перевода одного iOS-приложения

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

В 2017 году у Додо Пиццы появилось приложение для iOS на русском языке, а в 2019 его понадобилось перевести на румынский, а потом ещё на несколько языков. При этом ни одна строка не была обёрнута в макрос NSLocalizedString(…).

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

Читать далее

«Горячие» и «холодные» Feature toggles: принципы работы

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

В этой статье мы расскажем про принципы безопасной работы с переключателями функционала – Feature Toogles: 

— Что из себя представляют переключатели функционала и для чего их использовать.

— Какие проблемы возникают при неправильном использовании.

— Что такое «горячие» и «холодные» переключатели, и как они способны решить проблемы из прошлого пункта. 

— Реализация «холодных» toogle-ов с помощью условной компиляции и линковки.

Наверняка статья не станет откровением для опытных разработчиков, но пригодится их младшим товарищам.

Читать далее

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

Почему я против enum

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

Меня зовут Саша Терентьев, я из команды ленты ВКонтакте. В этой статье поделюсь мыслями о проблемах кода, где используются enum и сопоставления типов. Часто встречаю такой код в проектах, ресурсах, примерах. Мы обсуждали это с коллегами на внутреннем событии, и из моего доклада выросла эта статья.

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

Читать далее

Оптимизация рендера в iOS: frame buffer, Render Server, FPS, CPU vs GPU

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

Render Loop крутится — кадры мутятся

Доброго времени суток, уважаемые читатели. Здесь я начинаю свой цикл статей о работе с графикой в iOS.

В моих планах разобраться с работой базовых механик отрисовки и углубиться к таким вещам как AVFoundation, Metal.

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

Читать далее

Восемь вопросов от iOS-разработчиков на собесах в hh.ru

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

Мы в hh постоянно находимся в активном поиске истинных талантов и проводим массу собеседований. Как правило, они состоят из двух этапов — технического и продуктового. На каждом из них у кандидатов возникает множество вопросов, и чтобы облегчить всем жизнь, мы отобрали самые популярные и отвечаем на них в этой статье.

Ладно, давайте ваши вопросы

Force Update — механизм принудительного обновления мобильных приложений

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

Абсолютное большинство мобильных приложений имеет интересный нюанс – «хвост» старых версий, которыми все еще продолжают пользоваться. В этой статье мы посмотрим, какие проблемы это приносит и как с этим бороться. Материал будет полезен и мобильным разработчикам, и тем, кто каким-либо образом связан с разработкой мобильных приложений, к примеру, разрабатывает backend сервисы, которые используются в приложениях.

Читать далее

Разбираем SceneDelegate и AppDelegate в iOS 13

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

Продолжаем делиться своей практикой и переводами статей, которые могут быть полезны мобильному разработчику. В прошлых статьях мы разобрали инструменты тестирования и оптимизацию внедрения зависимостей в Android, а сейчас рассмотрим одно из нововведений в iOS 13 – поддержку многооконного режима и разделение AppDelegate (жизненный цикл и настройка приложения) и SceneDelegate (отображение приложения). 

От автора: Ещё до Xcode 11, при создании нового проекта вы знали, что по умолчанию создаются некоторые файлы, такие как AppDelegate.swift, ViewController.swift и StoryBoard, а также некоторые другие. Но в Xcode 11 вы могли заметить, что наряду с файлами по умолчанию, указанными выше, создается новый файл – SceneDelegate.swift.

Сначала вам может быть непонятно, что это за файл, для чего он создан и как использовать SceneDelegate при разработке приложения. Но давайте попробуем понять разницу между AppDelegate и SceneDelegate.

Читать далее

FPS не падай, девайс не грейся

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

В октябре 2020 года в техническую поддержку Авито стали обращаться пользователи с проблемами нагрева девайса и просадками FPS вплоть до полного фриза iOS-приложения. Проблема, как казалось, была глобальной. Она не относилась к какой-то конкретной функциональности приложения и поэтому не подходила в бэклоги продуктовых команд. Выход был один: засучить рукава и самому разобраться, что пошло не так. Не даром же я performance engineer.

Читать далее