В каких технических областях или продуктах вы хотели бы развиваться как iOS-разработчик?

Ответ

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

1. Производительность и оптимизация

  • Работа с Instruments для профилирования (Time Profiler, Allocations, Energy Log).
  • Оптимизация Core Animation (использование shouldRasterize, drawRect: vs. слоев).
  • Снижение энергопотребления (фоновая работа, таймеры, CADisplayLink).
    // Пример оптимизированной анимации
    let displayLink = CADisplayLink(target: self, selector: #selector(updateFrame))
    displayLink.preferredFrameRateRange = CAFrameRateRange(minimum: 30, maximum: 60)
    displayLink.add(to: .main, forMode: .common)

2. Современная архитектура и реактивное программирование

  • Внедрение SwiftUI с Combine или The Composable Architecture (TCA).
  • Разработка модульных, тестируемых систем.

3. Машинное обучение на устройстве

  • Интеграция и оптимизация Core ML моделей.
  • Использование Vision и NaturalLanguage фреймворков.

4. Дополненная реальность (ARKit)

  • Создание иммерсивных интерфейсов с RealityKit.
  • Оптимизация 3D-рендеринга.

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

Ответ 18+ 🔞

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

1. Производительность — это святое, блядь. Тут без Instruments — просто как без рук, внатуре. Time Profiler — чтобы найти, где твой код тупит, как олень в свете фар. Allocations — чтобы не было утечек памяти, а то приложение накроется медным тазом, а пользователь охуеет от восторга. Energy Log — мой любимый, смотришь, какая тварь на фоне жрёт батарейку, и просто впендюриваешь ей оптимизацию.

А с Core Animation — это отдельная песня. Тыкать shouldRasterize бездумно — это верный путь в ад, блядь. Сделаешь в неподходящем месте — получишь овердохуища потребления памяти и артефакты. А выбор между drawRect: и слоями — это как хирургическая операция, надо точно знать, что реже меняется и что важнее: процессор или видеопамять. Вот твой пример с CADisplayLink — это уже серьёзно, когда ты вручную управляешь кадрами, а не пускаешь на самотёк. Красота.

2. Архитектура — чтобы не выстрелить себе в ногу. SwiftUI с Combine — это, конечно, модно и стильно, но если наделать костылей, то получится пиздопроебина, которую ни тестировать, ни поддерживать. The Composable Architecture — штука мощная, но надо понимать, зачем она тебе в конкретном проекте. Не тащи слона в квартиру, чтобы муху прихлопнуть. Главное — модульность. Чтобы можно было выкинуть один кусок, как говно из тазика, и вставить новый, не перелопачивая всю вселенную.

3. Машинное обучение прямо в телефоне — это уже не фантастика. Core ML — вещь, конечно, но если взять модель, которая весит как чугунный мост, то пользовательское удивление будет на уровне «ни хуя себе». Надо ужимать, квантовать, выбирать правильные фреймворки — Vision для картинок, NaturalLanguage для текста. Чтобы всё летало, а не думало по пять секунд над каждой фоткой котика. Иначе какой, нахуй, user experience?

4. ARKit — это вообще ёперный театр. RealityKit — мощно, но если наделать полигонов, как у дурака фантиков, то рендеринг сожрёт всё, и пользователь увидит слайд-шоу вместо иммерсивной реальности. Тут каждая мелочь важна: и текстуры, и освещение, и оптимизация сцен. Надо, чтобы волшебство работало, а не лагало, вызывая у человека желание швырнуть телефон об стену.

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