Приглашаем iOS-разработчиков на Weekend Offer в Команду ВКонтакте. За одни выходные — 30 и 31 июля — вы познакомитесь с тимлидами, узнаете о работе, побываете на всех этапах собеседований и, возможно, присоединитесь к нашей команде: vk.com/iosoffer.
Spotify представила XCRemoteCache — инструмент удаленного кеширования для iOS, сокращающий время чистой сборки на 70%
Разработчики Spotify открыли исходный код библиотеки XCRemoteCache, которая помогает ускорить время сборки iOS-проектов. Инженеры компании заявляют, что использование инструмента внутри команды позволило сократить время чистой сборки на 70%. Библиотека построена на принципе использования удаленного кэширования с целью повторного использования целевых артефактов в Xcode. Инструмент совместим кодом, написанным на Swift, Objective-C и на связке двух языков сразу.
Ушел из жизни один из создателей Objective C Брэд Кокс
Брэд Кокс, доктор философии из Манассаса, штат Вирджиния, скончался 2 января. Кокс известен тем, что участвовал в создании языка программирования Objective-C вместе с Томом Лавом.
Fortran оказался в топ-20 языков программирования вместо Objective-C
Созданный в 1957 году специалистами IBM язык программирования Fortran попал на 20-е место рейтинга TIOBE. Еще летом прошлого года он занимал последнее, 50-е место. При этом Fortran опередил в списке Objective-C и Rust.
Логи Xcode — читаем самостоятельно?
В этой публикации попробуем понять, как и где Xcode хранит свои логи, что такое SLF0 и как все это читать, а может быть даже понять, и лучше без IDE, так интереснее.
Шифруем CoreML
ML модель, как и многие другие формы интеллектуальный собственности, можно украсть и использовать для своих целей без ведома авторов. В случае с CoreML большинство моделей зашиты внутри приложения. Достаточно взять Jailbreak девайс, прочитать содержимое бандла и вытащить модель. Подобрать инпут модели уже дело техники и некоторого количества времени. В свое время на практике подобный подход я использовал для сравнения качества нашей ML модели с моделями конкурентов. В этой статье я хотел бы поделиться возможными способами шифрования CoreML моделей.
Про ООП через призму косвенности. И «Галя, отмена!»
Да, мы все знаем, что это такое из первых двух статей по запросу "Что такое ООП?" или из потоковых лекций первых семестров ВУЗа.
Казалось бы, ООП – Объектно ориентированное программирование. Там что-то про классы, что-то про объекты, если повезет, то, возможно, вспомним, что такое абстракция, инкапсуляция, наследование и полиморфизм. Что там еще надо знать?
И хорошо, если ты прочитал нормальную статью, и не будешь объяснять инкапсуляцию вот так: "ну это история про private, данные скрываются!".
Никогда не хотелось копнуть поглубже? Узнать почему у нас есть эти принципы?
Используем Objective-C в C++ без проблем
Интегрируем Objective-C код из Apple SDK в C++ проект, без переписывания всего проекта на Objective-C++, с использованием PIMPL идиомы. Также, сборка всего проекта вместе с использованием Makefile и CMake (для генерации .xcodeproject).
Видео докладов с FunTech iOS-meetup #1
23 марта команда FunTech Meetups провела свой первый собственный iOS-meetup, с которого сегодня выкладываем видео докладов.
«Крутим RunLoop. Как устроена лента ВКонтакте», Александр Терентьев, VK
Создание инкрементального сервера для iOS Team
Бесплатная книга
После пяти лет наступаний на одни и те же грабли, и полугода поисков DevOps-а, который знает что-такое Provision Profile и как от него зависит развертывание приложения, было принято решение составить пошаговую инструкцию, в картинках, о том, настраивать рабочее окружение в iOS Team с минимальными финансовыми вложениями (к примеру, когда нет проплаченных аккаунтов GitHub или Jira), а работа кипит.
AppCode 2019.3: работает быстрее, лучше понимает Swift, знает про Mac Catalyst, удобно отображает сообщения сборки
В AppCode 2019.3 мы сделали основной упор на быстродействие и поддержку языка. В этом посте рассказываем, что получилось (спойлер: многое ускорили).
Any и AnyObject в Swift. В чем их различие?
AppCode 2020.1: улучшения быстродействия, автодополнение до конца индексации, генерация документации и многое другое
Всем привет, в этом посте рассказываем про новый AppCode 2020.1, который мы выпустили буквально вчера.
Реализация наследования в файлах локализации iOS
Приветствую, дорогие хабражители!
Сегодня я хочу поделиться интересным опытом в решении проблемы локализации. В iOS локализация устроена достаточно удобно с точки зрения одного таргета, либо нескольких таргетов, в которых ключи в localizable.strings не сильно повторяются. Но всё становится сложнее, когда у вас появляется с десяток таргетов, в которых больше половины ключей повторяются, но при этом частично имеют разные значения, а так же есть набор уникальных для конкретного таргета ключей.
Разделяй и властвуй. Модульное приложение из монолита на Objective-C и Swift
Привет, Хабр! Меня зовут Василий Козлов, я iOS-техлид в Delivery Club, и застал проект в его монолитном виде. Признаюсь, что приложил руку к тому, борьбе с чем посвящена эта статья, но раскаялся и трансформировал своё сознание вместе с проектом.
Я хочу рассказать, как разбивал существующий проект на Objective-C и Swift на отдельные модули — framework’и. Согласно Apple, framework — это директория определенной структуры.
Изначально мы поставили цель: обособить код, реализующий функцию чата для поддержки пользователей, и уменьшить длительность сборки. Это привело к полезным последствиям, которым сложно следовать, не имея привычки и существуя в монолитном мире одного проекта.
Исправление неоднозначных ограничений без перезапуска приложения
Примечание
Слова layout, autolayout и constraints я перевёл, соответственно, как вёрстка, автовёрстка и ограничения.
Работа с автовёрсткой
Проблемы автовёрстки решать непросто. Запуская приложение, надеешься, что все установленные ограничения работают корректно, а получаешь кучу ошибок автовёрстки в логах консоли.
Interface Builder неплох как визуальный редактор вёрстки. В нём есть индикация некорректных граничных параметров. Однако ваша вёрстка может отличаться от видимой в IB. На экран приложения могут влиять различные параметры — например, ответы на сетевые запросы или локально сохранённые данные. Более того, могут быть экраны, частично или полностью построенные на информации, заданной сервером. От сервера может поступать вообще всё что угодно, в том числе шрифты, цвета и формы.
Кажется, остаётся только вручную разбирать гигантский лог ошибок автовёрстки. Но есть и другие варианты.
Как писать на Objective-C в Linux (с использованиям системы сборки CMake и автодополнением)
Запускаем Objective-C на Linux.
Диспетчеризация в Swift: погружение в теорию и практику
Все iOS-разработчики так или иначе сталкиваются с диспетчеризацией (Method Dispatch), но далеко не каждый понимает, как это работает. Зная, как проходит процесс диспетчеризации под капотом программы, вы можете повысить производительность своего кода.
В этом материале мы разберем типы диспетчеризации, их плюсы и минусы, а также затронем один из распространённых багов.
Материал будет полезен для всех iOS-разработчиков, которые хотят улучшить производительность своего кода. Кроме того, этот материал поможет при подготовке к собеседованию, где вопросы о Method Dispatch встречаются достаточно часто.
Приключение на 5 минут: как мы переводили все зависимости на SPM
Привет, Хабр!
Меня зовут Вильян Яумбаев, в этой статье я расскажу вам про наши приключения на пути к SPM.
В 2015 ПСБ начал разрабатывать проект для бизнеса. Для него, в свою очередь, было нужно приложение. Сперва всё находилось в одном репозитории одного проекта в одном воркспейсе. Первые авторы подключали сторонние зависимости через CocoaPods, поскольку проприетарного менеджера зависимостей ещё не существовало. Но в тот же год в Apple началась работа над Swift Package Manager. Им предстояло встретиться в нашем проекте.
В этой статье расскажу, через что мы прошли, переводя зависимости на SPM, и поделюсь нашими наработками.
Диспетчеризация методов iOS
Каждый iOS-разрабочик, иногда сам того не осознавая, сталкивается с диспетчеризацией методов.
Знания принципов работы диспетчеризации методов необходимы при написании кода, поскольку эти знания позволят повысить производительность приложения, а также не допустить ошибки, связанные с неочевидным поведением в Swift.
В данной статье будут рассмотрены понятие диспетчеризации, их типы, преимущества и недостатки, а также приведены небольшие задачи для укрепления знаний.