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

Objective C *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

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

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

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

Читать далее
Всего голосов 18: ↑11 и ↓7 +4
Просмотры 12K
Комментарии 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
Просмотры 3.1K
Комментарии 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Memory Management: ARC vs MRC в iOS

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

Как работает Automatic Reference Counter в iOS? На самом деле эту тему мне было легче понять после того, как я познакомился с Manual Reference Counter. Это очень простая статья, которая помогает базово понять как работает управление памятью в iOS.

Для управления памятью в iOS есть несколько инструментов:

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

Модуляризация iOS-приложения: зачем и как мы разбиваем Badoo на модули

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

В iOS-разработке Badoo мы уже несколько лет занимаемся созданием модулей, и большая часть нового кода разрабатывается вне кодовой базы приложений. Сейчас у нас более 100 модулей для Badoo и Bumble. В этой статье я расскажу о нашем опыте и отвечу на самые популярные вопросы о модуляризации: 

— по какому принципу выделять модули; 

— как организовать связи между ними; 

— достаточно ли для фичи одного фреймворка; 

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

— зачем в этом процессе мониторинг;

— можно ли автоматизировать создание новых модулей и так далее. 

Мой коллега, лид команды iOS-разработки и Core-команды Артем Лоенко, в начале года говорил об этом на митапе FunCorp в докладе «Катастрофически полезные последствия модуляризации». Я приведу более подробный разбор процесса модуляризации и некоторых опущенных в его рассказе деталей.

Читать далее
Всего голосов 25: ↑24 и ↓1 +23
Просмотры 5.5K
Комментарии 8

Горячая четвёрка умирающих языков программирования

Блог компании RUVDS.com Perl *Программирование *Haskell *Objective C *
Перевод
Я занимался поиском лучших языков программирования 2020 года и наткнулся на страницы, на которых шла речь о языках, теряющих популярность. Я программист, и я понимаю, что любому программисту крайне важно знать о том, какие технологии являются актуальными, а какие — нет.

Каждый программист — это писатель.

Серкан Лейлек


Я, после того, как насмотрелся на отчёты о языках программирования, теряющих актуальность, выбрал 4 языка, которые, как я полагаю, уже не стоят того, чтобы их изучали. Я, ради подкрепления своих выводов, прибегну к некоторым показателям популярности языков. В частности, речь идёт об индексе PYPL (PopularitY of Programming Language Index, индекс популярности языков программирования), о данных Google Trends и о некоторых сведениях, которые можно найти на платформе YouTube.


Фрагмент рейтинга PYPL (источник)

Платформа YouTube использовалась мной в качестве источника данных о перспективности языков программирования через оценку популярности видеоуроков по соответствующим языкам.

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

Но хватит предисловий. Поговорим об умирающих языках программирования.
Читать дальше →
Всего голосов 132: ↑68 и ↓64 +4
Просмотры 89K
Комментарии 273

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

Блог компании VK Блог компании Delivery Club Tech Разработка под iOS *Objective C *Swift *


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

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

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

Service Locator — развенчивание мифов

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

Удивительно, как практика, демонстрирующая хорошую производительность и удобство работы для одной платформы демонизируется в лагере приверженцев другой платформы. Эту участь в полной мере ощущает на себе паттерн Локатор сервисов, который весьма популярен в .Net, и имеет плохую репутацию в iOS.
Читать дальше →
Всего голосов 11: ↑5 и ↓6 -1
Просмотры 4.8K
Комментарии 7

Оптимизация времени сборки — Часть 1

Клиентская оптимизация *Разработка под iOS *Objective C *Xcode *Swift *
Перевод
Почти каждый разработчик хотя бы раз сталкивался с довольно длительным временем сборки своего проекта. Это приводит к снижению производительности и замедляет процесс разработки всей команды. Как вы видите, увеличение времени сборки проекта имеет решающее значение, поскольку оно оказывает непосредственное влияние на время публикаций приложения в AppStore и для более быстрого релиза новых возможностей вашего приложения.

В этой статье мы узнаем, как профилировать сборку в Xcode и получать метрики. В следующей статье я расскажу о методах устранения узких мест и ускорения сборки проекта. Следует также упомянуть, что мы будем использовать проект Kickstarter iOS, который можно найти на Github. Так что давайте начнем!

Что мы измеряем?


Первое, что мы должны сделать, — определить, что мы пытаемся измерить и оптимизировать. Можно рассмотреть два варианта:

  • Clean build — clean и сборки проекта. Часто clean сборка выполняется на CI для проверки нового pull request и выполнения юнит тестов.
  • Incremental build — сборки проекта после значительных правок исходного кода. Эта сборка создается разработчиком во время работы над новой функциональностью.

В большинстве случаев уменьшение времени при Clean сборке должно также ускорить Incremental сборку. Оптимальным вариантом было бы создание метрик для обоих типов сборок и отслеживание их. Мы будем измерять время сборки, используя Debug конфигурацию только потому, что она используются большую часть времени и оказывают большее влияние на разработку.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 3K
Комментарии 4

Переход c Cocoapods на Swift Package Manager

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


Cocoapods считается наиболее популярным менеджером зависимостей для iOS. Последние годы Apple работает над развитием своего нативного менеджера зависимостей Swift Package Manager (SPM).

Изначально его использование было возможно только для server-side Swift или приложений для терминала. На таких приложениях обкатывали и дорабатывали SPM, комьюнити знакомилось с его работой, а команда Apple получила бета тестеров.

С релизом Xcode 11 SPM начал приходить и в мир разработки под iOS. Сейчас это уже полноценный инструмент, который можно использовать, но пока с ограничениями.
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 9K
Комментарии 6

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

Разработка под iOS *Objective C *Swift *
Из песочницы
Довольно долгое время в своих проектах при написании когда я использовал тип Any, например при обработке JSON данных. Но также я знал что есть и второй тип — AnyObject. И недавно я задумался о разнице между этими двумя типами.
Читать дальше →
Всего голосов 18: ↑15 и ↓3 +12
Просмотры 5.9K
Комментарии 2

Измените свой образ мышления, работая с SwiftUI

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

На прошлой неделе я увидел, что сообщество пытается перенести наработаные шаблоны разработки c UIKit в SwiftUI. Но я уверен, что лучший способ написать эффективный код используя SwiftUI — это забыть все об UIKit и полностью изменить свое мышление с точки зрения разработки пользовательского интерфейса. На этой неделе я расскажу основные отличия между разработкой используя UIKit и SwiftUI.
Читать дальше →
Всего голосов 17: ↑13 и ↓4 +9
Просмотры 5.6K
Комментарии 1

Redux — подобные контейнеры состояния в SwiftUI. Рекомендации

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

На прошлой неделе мы говорили о Redux – подобных контейнерах состояний в SwiftUI. Redux предоставляет единый источник истинностных значений, который предотвращает огромное количество потенциальных ошибок, которые могут возникнуть в разных состояниях приложения. На этой неделе мы поговорим о проверенных методах создания приложений на основе Redux, которые позволят сохранять нашу кодовую базу простой и без ошибок.
Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 1.8K
Комментарии 0

Лучшие практики и инструменты при разработке iOS приложений

Программирование *Разработка под iOS *Разработка мобильных приложений *Objective C *Swift *
Перевод
Разрабатывая мобильные приложения, мне не раз приходилось создавать проекты с нуля. При этом я и моя команда всегда тратили много времени на основную настройку проекта, такие как интеграция сторонних инструментов, настройка структуры проекта, написание базовых классов, интеграция внешних библиотек и т.д.

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

Каждый инструмент или подход, добавленный в шаблон, заслуживают отдельной статьи, но я хотел бы попытаться суммировать каждый пункт и дать краткое объяснение того, почему я включил их в данную статью.
Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 6K
Комментарии 14

То, что нужно знать о проверке чека App Store (App Store receipt)

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

В StackOverflow по-прежнему появляется много вопросов о валидации App Store чеков, поэтому мы решили написать статью на эту тему в формате вопросов и ответов.


image

Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 14K
Комментарии 5

Эффективное использование libdispatch

Разработка под iOS *Objective C *Swift *
Перевод
(Прим.перев.: автор оригинального материала — пользователь github и twitter Thomas @tclementdev. Ниже в переводе сохранено повествование от первого лица, которое использует автор.)

Думаю, что большинство разработчиков использует libdispatch неэффективно из-за того как её представили сообществу, а также из-за запутанной документации и API. Я пришел к этой мысли после чтения обсуждения «concurrency» в рассылке посвященной развитию Swift (swift-evolution). Особенно просвещают сообщения от Пьера Хабузит (Pierre Habouzit — занимается поддержкой libdispatch в Apple):
Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Просмотры 2K
Комментарии 2

MVC без C: Что изменит SwiftUI в архитектуре приложений?

Разработка под iOS *Objective C *Swift *Elm *
Перевод
MVC был давним стандартом в паттернах проектирования, используемых для написания iOS приложений. Структура iOS приложений, которые создавались ранее, была основана на одном базовом компоненте, который присутствует везде, и называется он — Controller. На WWDC19 был представлен SwiftUI, который не имеет такого компонента.

Проблема с так называемыми massive view-controllers должна быть решена в SwiftUI. Так, необходимо найти новый способ правильной декомпозиции кода. Давайте посмотрим на текущее состояние платформы и подумаем, какие парадигмы мы можем использовать при разработке для iOS13 и более поздних версий.

image
Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Просмотры 5.9K
Комментарии 1

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