Pull to refresh

Устроиться ВКонтакте за два дня: Weekend Offer для iOS-разработчиков

Reading time1 min
Views1.5K

Приглашаем iOS-разработчиков на Weekend Offer в Команду ВКонтакте. За одни выходные — 30 и 31 июля — вы познакомитесь с тимлидами, узнаете о работе, побываете на всех этапах собеседований и, возможно, присоединитесь к нашей команде: vk.com/iosoffer.

Подробнее
Total votes 8: ↑5 and ↓3+2
Comments2

Spotify представила XCRemoteCache — инструмент удаленного кеширования для iOS, сокращающий время чистой сборки на 70%

Reading time3 min
Views2.6K

Разработчики Spotify открыли исходный код библиотеки XCRemoteCache, которая помогает ускорить время сборки iOS-проектов. Инженеры компании заявляют, что использование инструмента внутри команды позволило сократить время чистой сборки на 70%. Библиотека построена на принципе использования удаленного кэширования с целью повторного использования целевых артефактов в Xcode. Инструмент совместим кодом, написанным на Swift, Objective-C и на связке двух языков сразу.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments0

Ушел из жизни один из создателей Objective C Брэд Кокс

Reading time2 min
Views3.8K

Брэд Кокс, доктор философии из Манассаса, штат Вирджиния, скончался 2 января. Кокс известен тем, что участвовал в создании языка программирования Objective-C вместе с Томом Лавом.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments3

Fortran оказался в топ-20 языков программирования вместо Objective-C

Reading time2 min
Views5K

Созданный в 1957 году специалистами IBM язык программирования Fortran попал на 20-е место рейтинга TIOBE. Еще летом прошлого года он занимал последнее, 50-е место. При этом Fortran опередил в списке Objective-C и Rust.

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments9

Логи Xcode — читаем самостоятельно?

Level of difficultyHard
Reading time10 min
Views3.5K

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

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments0

Шифруем CoreML

Reading time4 min
Views2.3K

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

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments9

Про ООП через призму косвенности. И «Галя, отмена!»

Reading time5 min
Views4.3K

Да, мы все знаем, что это такое из первых двух статей по запросу "Что такое ООП?" или из потоковых лекций первых семестров ВУЗа.

Казалось бы, ООП – Объектно ориентированное программирование. Там что-то про классы, что-то про объекты, если повезет, то, возможно, вспомним, что такое абстракция, инкапсуляция, наследование и полиморфизм. Что там еще надо знать?
И хорошо, если ты прочитал нормальную статью, и не будешь объяснять инкапсуляцию вот так: "ну это история про private, данные скрываются!".

Никогда не хотелось копнуть поглубже? Узнать почему у нас есть эти принципы?

Узнать про ООП побольше
Total votes 10: ↑7 and ↓3+4
Comments9

Используем Objective-C в C++ без проблем

Reading time6 min
Views3.5K

Интегрируем Objective-C код из Apple SDK в C++ проект, без переписывания всего проекта на Objective-C++, с использованием PIMPL идиомы. Также, сборка всего проекта вместе с использованием Makefile и CMake (для генерации .xcodeproject).

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments37

Видео докладов с FunTech iOS-meetup #1

Reading time1 min
Views2.8K


23 марта команда FunTech Meetups провела свой первый собственный iOS-meetup, с которого сегодня выкладываем видео докладов.

«Крутим RunLoop. Как устроена лента ВКонтакте», Александр Терентьев, VK


Total votes 18: ↑18 and ↓0+18
Comments1

Создание инкрементального сервера для iOS Team

Reading time3 min
Views2.9K
image

Бесплатная книга

После пяти лет наступаний на одни и те же грабли, и полугода поисков DevOps-а, который знает что-такое Provision Profile и как от него зависит развертывание приложения, было принято решение составить пошаговую инструкцию, в картинках, о том, настраивать рабочее окружение в iOS Team с минимальными финансовыми вложениями (к примеру, когда нет проплаченных аккаунтов GitHub или Jira), а работа кипит.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments1

AppCode 2019.3: работает быстрее, лучше понимает Swift, знает про Mac Catalyst, удобно отображает сообщения сборки

Reading time3 min
Views3.8K

В AppCode 2019.3 мы сделали основной упор на быстродействие и поддержку языка. В этом посте рассказываем, что получилось (спойлер: многое ускорили).


Splash


Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments12

Any и AnyObject в Swift. В чем их различие?

Reading time3 min
Views13K
Довольно долгое время в своих проектах при написании когда я использовал тип Any, например при обработке JSON данных. Но также я знал что есть и второй тип — AnyObject. И недавно я задумался о разнице между этими двумя типами.
Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments2

AppCode 2020.1: улучшения быстродействия, автодополнение до конца индексации, генерация документации и многое другое

Reading time3 min
Views3.2K

Всем привет, в этом посте рассказываем про новый AppCode 2020.1, который мы выпустили буквально вчера.


КПДВ

Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments8

Реализация наследования в файлах локализации iOS

Reading time5 min
Views1.6K


Приветствую, дорогие хабражители!

Сегодня я хочу поделиться интересным опытом в решении проблемы локализации. В iOS локализация устроена достаточно удобно с точки зрения одного таргета, либо нескольких таргетов, в которых ключи в localizable.strings не сильно повторяются. Но всё становится сложнее, когда у вас появляется с десяток таргетов, в которых больше половины ключей повторяются, но при этом частично имеют разные значения, а так же есть набор уникальных для конкретного таргета ключей.
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments0

Разделяй и властвуй. Модульное приложение из монолита на Objective-C и Swift

Reading time7 min
Views9.2K


Привет, Хабр! Меня зовут Василий Козлов, я iOS-техлид в Delivery Club, и застал проект в его монолитном виде. Признаюсь, что приложил руку к тому, борьбе с чем посвящена эта статья, но раскаялся и трансформировал своё сознание вместе с проектом.

Я хочу рассказать, как разбивал существующий проект на Objective-C и Swift на отдельные модули — framework’и. Согласно Apple, framework — это директория определенной структуры.

Изначально мы поставили цель: обособить код, реализующий функцию чата для поддержки пользователей, и уменьшить длительность сборки. Это привело к полезным последствиям, которым сложно следовать, не имея привычки и существуя в монолитном мире одного проекта.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments6

Исправление неоднозначных ограничений без перезапуска приложения

Reading time4 min
Views2.1K

Примечание

Слова layout, autolayout и constraints я перевёл, соответственно, как вёрстка, автовёрстка и ограничения.

Работа с автовёрсткой

Проблемы автовёрстки решать непросто. Запуская приложение, надеешься, что все установленные ограничения работают корректно, а получаешь кучу ошибок автовёрстки в логах консоли.

Interface Builder неплох как визуальный редактор вёрстки. В нём есть индикация некорректных граничных параметров. Однако ваша вёрстка может отличаться от видимой в IB. На экран приложения могут влиять различные параметры — например, ответы на сетевые запросы или локально сохранённые данные. Более того, могут быть экраны, частично или полностью построенные на информации, заданной сервером. От сервера может поступать вообще всё что угодно, в том числе шрифты, цвета и формы.

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

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments2

Диспетчеризация в Swift: погружение в теорию и практику

Reading time6 min
Views28K

Все iOS-разработчики так или иначе сталкиваются с диспетчеризацией (Method Dispatch), но далеко не каждый понимает, как это работает. Зная, как проходит процесс диспетчеризации под капотом программы, вы можете повысить производительность своего кода. 

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

Материал будет полезен для всех iOS-разработчиков, которые хотят улучшить производительность своего кода. Кроме того, этот материал поможет при подготовке к собеседованию, где вопросы о Method Dispatch встречаются достаточно часто.

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments10

Приключение на 5 минут: как мы переводили все зависимости на SPM

Reading time12 min
Views4.1K

Привет, Хабр!

Меня зовут Вильян Яумбаев, в этой статье я расскажу вам про наши приключения на пути к SPM.

В 2015 ПСБ начал разрабатывать проект для бизнеса. Для него, в свою очередь, было нужно приложение. Сперва всё находилось в одном репозитории одного проекта в одном воркспейсе. Первые авторы подключали сторонние зависимости через CocoaPods, поскольку проприетарного менеджера зависимостей ещё не существовало. Но в тот же год в Apple началась работа над Swift Package Manager. Им предстояло встретиться в нашем проекте.

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

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments5

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

Reading time6 min
Views9K

Каждый iOS-разрабочик, иногда сам того не осознавая, сталкивается с диспетчеризацией методов.
Знания принципов работы диспетчеризации методов необходимы при написании кода, поскольку эти знания позволят повысить производительность приложения, а также не допустить ошибки, связанные с неочевидным поведением в Swift.
В данной статье будут рассмотрены понятие диспетчеризации, их типы, преимущества и недостатки, а также приведены небольшие задачи для укрепления знаний.

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments4
1
23 ...