Как стать автором
Обновить
4.78
Рейтинг

Objective C *

Компилируемый объектно-ориентированный язык

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

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

Программирование *Objective C *ООП *
Из песочницы

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

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

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

Узнать про ООП побольше
Всего голосов 10: ↑7 и ↓3 +4
Просмотры 3K
Комментарии 9

Новости

Шифруем CoreML

Информационная безопасность *Разработка под iOS *Разработка мобильных приложений *Objective C *Swift *
Из песочницы

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

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.7K
Комментарии 9

Как я участвовал в конкурсе Telegram на создание медиаредактора и занял никакое место (но получил бесценный опыт?)

Разработка под iOS *Разработка мобильных приложений *Objective C *Swift *
✏️ Технотекст 2022

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

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

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

Примечание. Если статья покажется интересной, то вот тут я пишу об iOS-разработке и о том, что с ней связано.

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 4.1K
Комментарии 8

Asychronous Flow Kit — Objective-C тулкит для асинхронных операций

Open source *Разработка под iOS *Objective C *Промышленное программирование *Разработка под MacOS *
Из песочницы

Всем привет.

Это моя первая публикация на Хабре, я взволнован и вообще; и в качестве дебюта хочу представить вам свой пет-проект: программный пакет на Obj-C, который реализует (некоторые) известные мне паттерны асинхронного поведения и претендует обеспечить простые инструменты для утилизации всех имеющихся процессоров.

Вперед, за деталями
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 773
Комментарии 4

Переход на Metal

Блог компании 2ГИС Разработка под iOS *Разработка мобильных приложений *Objective C *Геоинформационные сервисы *

Мы закончили регрессионное тестирование и со дня на день собираемся начать раскатывать на бой релиз с включенным Metal. Зачем мы это делаем и как всё происходит — рассказываем в статье. 

Причина первая: уход на пенсию OpenGL для iOS/OSX. В 2018 году Apple объявили, что прекращают поддержку этого графического API, и это только вопрос времени, когда они удалят его из своих операционок и запретят выкладывать в App Store приложения, использующие GLES (OpenGL for Embedded Systems — подмножество API OpenGL для встроенных систем, например, мобильных устройств). А кому надо впопыхах интегрировать незнакомый API? Правильно, никому. Плюс, нет-нет да и случаются какие-то неприятные падения где-то под капотом OpenGL, починка которых сводится к мольбам, что очередной точечный фикс кода всё исправит.

Читать далее
Всего голосов 26: ↑26 и ↓0 +26
Просмотры 5.3K
Комментарии 19

Чиним баг в iOS Firebase RemoteConfig

Блог компании AliExpress Россия Разработка под iOS *Objective C *

Здравствуйте, меня зовут Артем Волков. Я iOS разработчик в компании "AliExpress Россия".

В этой статье расскажу историю одного бага, который мы встретили, работая c подом Remote Config из SDK Google Firebase для iOS, а также о том, как мы внесли свой небольшой вклад в его исправление.

Жизнь и приключения одного бага
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 1.2K
Комментарии 1

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

Блог компании ПСБ Разработка под iOS *Objective C *Xcode *Swift *
✏️ Технотекст 2022

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

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

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

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

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 2.6K
Комментарии 5

Простой способ обнаружить retain cycle в UIViewController

Разработка под iOS *Objective C *Отладка *Swift *
Tutorial

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

Apple предлагает отличный инструмент для отладки утечек памяти. Часто для этого используется метод print в deinit.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 1.8K
Комментарии 3

Как я занял третье место в конкурсе Telegram и выиграл $ 2 000

Разработка под iOS *Разработка мобильных приложений *Objective C *Swift *

Краткая предыстория.

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

Задача: Создать кроссплатформенный модуль на C++ для корректировки внешности. Создать приложение для iOS или Android, которое демонстрирует работу этого модуля, в режиме реального времени преобразовывая видео из фронтальной камеры.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 7.2K
Комментарии 2

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

Программирование *Разработка под iOS *Разработка мобильных приложений *Objective C *Swift *
Из песочницы

Большинство соревнований для программистов требуют максимально быстрого решения и реализации алгоритмических задач на любом из языков программирования. Среди мобильных разработчиков популярны хакатоны, но сегодня речь пойдет о контестах. Наиболее известные из них – Codeforces Rounds, VK Cup Engine, ACM ICPC. Мы поговорим о том, как они устроены, какие плюсы и минусы есть у разработчиков с «олимпиадным» бэкграундом и как этот опыт влияет на работу с коммерческими задачами в мобильной разработке.

Читать далее
Всего голосов 15: ↑11 и ↓4 +7
Просмотры 7.7K
Комментарии 9

Управление памятью в Swift

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

Об управление памятью в iOS ходят много слухов, поэтому я собрал все самые интересные в интернете и попробовал их структурировать в один большой

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 28K
Комментарии 11

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

Блог компании ПСБ Разработка под iOS *Objective C *Xcode *Swift *
Перевод

Примечание

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

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

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

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

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

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 1.4K
Комментарии 2

Истории

Apple убивает TeamCity, Bitrise, Appcenter, Fastlane, Firebase, Sentry и иже с ними. Краткий обзор Xcode Cloud

Разработка под iOS *Разработка мобильных приложений *Objective C *Swift *Тестирование мобильных приложений *

Заголовок конечно громковат, может не убивает, но уменьшит им доходы точно. Давайте кратко посмотрим что представила Apple на WWDC 2021, что такое Xcode Cloud?

Читать далее
Всего голосов 18: ↑11 и ↓7 +4
Просмотры 14K
Комментарии 15

Тернистый путь внедрения Swift Package Manager. Доклад Яндекса

Блог компании Яндекс Разработка под iOS *Разработка мобильных приложений *Objective C *Swift *
Доклад будет интересен iOS-разработчикам, которые хотят внедрить технологию Swift Package Manager (SPM) в существующий проект. Руководитель iOS-разработки Яндекс Go Вадим Белотицкий рассказал о причинах, по которым его команда решила внедрять SPM, и о решении возникших проблем, включая:

  • Проблемы с компиляцией
  • Сочетание Swift- и Objective-C-кода
  • Падения, связанные с некорректной линковкой проекта
  • Сочетание двух менеджеров зависимостей — CocoaPods и SPM
  • Проблемы сборки на CI (TeamCity)

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

Читать конспект
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 6.4K
Комментарии 1

Связанные неявные выражения в Swift 5.4

Программирование *Разработка под iOS *Objective C *Swift *
Перевод

В Swift 5.4: не явные выражения для членов классов (также известные как «точечный синтаксис») теперь могут использоваться даже при обращении к свойству или методу в результате такого выражения, пока окончательный тип возвращаемого значения остается прежним.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 2.6K
Комментарии 0

Паттерн MFS для табличных представлений в iOS приложениях

Разработка под iOS *Разработка мобильных приложений *Интерфейсы *Objective C *Дизайн мобильных приложений *

Паттерн MFS для табличных представлений в iOS приложениях

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

Читать далее
Рейтинг 0
Просмотры 1.2K
Комментарии 0

MFS — паттерн построения UI в iOS приложениях

Разработка под iOS *Objective C *Дизайн мобильных приложений *
Из песочницы

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

Что, в свою очередь, приводит к росту кодовой базы и затруднению ее обслуживания.
MFS - позволяет создавать современный дизайн приложений и при этом избежать такого явления как MassiveViewController.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 3.1K
Комментарии 7

Модуляризация iOS-приложения Badoo: борьба с последствиями

Блог компании Badoo Разработка под iOS *Разработка мобильных приложений *Objective C *Swift *

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

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

В этой статье я расскажу:

— как мы не потерялись в сложном графе зависимостей;

— как спасли CI от чрезмерной нагрузки;

— что делать, если с каждым новым модулем приложение запускается всё медленнее;

— мониторинг каких показателей стоит предусмотреть и почему это необходимо.

Читать далее
Всего голосов 30: ↑30 и ↓0 +30
Просмотры 5K
Комментарии 7

Вклад авторов