iOS.Devs
5.51K subscribers
91 photos
4 videos
1 file
831 links
Всё самое актуальное из мира iOS разработки. По вопросам @suriksarkisyan

При поддержке qonversion.io

Чат: @ios_camp_chat.
Download Telegram
В прошлом году, в процессе beta тестирования iOS 13, мир увидел аж 8 бета версий. Это при том, что iOS 13 преподносилась как большой фикс-релиз. Поэтому я не удидивился, когда вышел анонс о том, что Apple менят подход к разработке новых операционных систем начиная с iOS 14. Новый подход предполагал, что многие недоработанные фичи просто будут выключены (кэп).

Ну а пока Apple осваиет feature флаги, рекомендую прочитать две интересные статьи.

Первая о том, почему классический gitflow устарел: оригинал и перевод.

Вторая о trunk based development, переход на который может помочь сильно улучшить ваши рабочие процессы: разработку, ревью, доставку фич в прод и многие другие. А здесь детали про feature flags в рамках tbd.
🧙‍♀️ Useful (and obscure!) Foundation types in Swift

7 неочевидных классов #Foundation, которые могут быть полезны. Примеры доступны по ссылке. Ниже тезисные описания.

1. NSScanner
Синтактический анализатор строк.

2. NSCache
Апгрейтнутый словарь. Может избежать переполнения памяти. Имеет thread safety из коробки.

3. NSByteCountFormatter
Форматирует и локализует байты:

1024 * 1024 => 1 MB

4. NSDataDetector
Ещё один сканер, который может искать ссылки, телефоны и другие данные во входном тексте.

5. CFBinaryHeap
Двоичная куча.

6. NSOrderedSet
Упорядоченный set. Доступ O(1), но при этом объекты упорядочены, в отличии от обычных хэш таблиц.

7. NSCountedSet
Неупорядоченная коллекция для подсчёта количества вхождений объекта. Удобная штука при решении алгоритмических задачек.

https://swiftrocks.com/useful-obscure-foundation-types-in-swift
⭐️ ReactorKit: фреймворк для организации архитектуры проектов на RX

Очень часто в проектах, где используют #rx, реактивный код размазан по всему приложению. Иногда это является аргументов в пользу отказа от реактивного подхода в целом.

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

Основные задачи, которые ReactorKit решает:

* Тестирование;
* Инкапсуляция;
* Низкий порог входа;
* Декларативный подход к организации кода для команды.

https://github.com/ReactorKit/ReactorKit
🔀 Паттерн стратегия в Swift

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

В общих чертах #strategy #pattern – шаблон из группы поведенческих паттернов проектирования, который определяет семейство схожих алгоритмов, помещает каждый из них в отдельный класс и позволяет использовать их во время выполнения приложения (в runtime).

Короче говоря: инкапсуляция в классы, переиспользование и возможность менять поведение в runtime.

Сценарии использования

1. Разные способы детать одно и то же;
2. Альтерантива наследованию;
3. Альтерантива ветвлению логики: if/else

Пример
Хотим печатать логи, при этом необходимо иметь возможность использовать разные стили: в верхнем регистре, нижнем или использовать особое форматирование ошибок.

При реализации паттерна стратегия необходимо выделить несколько сущностей:

What
Протокол, который определяет желаемое действие, в нашем случае писать лог.
protocol LoggerStrategy {
func log(_ message: String)
}


Who
Объект, который содержит стратегию и будет её исползовать.
struct Logger {
let strategy: LoggerStrategy

func log(_ message: String) {
strategy.log(message)
}
}


How
Конкретная реализация стратегии, то есть конкретное действие.
struct CapitalizedStrategy: LoggerStrategy {
func log(_ message: String) {
print(message.capitalized)
}
}


Пример использования:
var logger = Logger(strategy: CapitalizedStrategy())
logger.log("my first strategy") // My First Strategy


В статье также представлены другие примеры, такие как форма валидации, настройка ячеек и другие.

https://medium.com/flawless-app-stories/strategy-pattern-in-swift-1462dbddd9fe
А по ссылке очень красивый ресурс с подробным описанием всех паттернов проектирования, одних только иллюстраций достаточно, чтобы изучить их.

https://refactoring.guru/ru/design-patterns/creational-patterns
😇 Сегодня постов много, сорри, но к нам пришла очень крутая подборка.

@slutsker вручную отобрал более 60 материалов для углублённого изучения разработки для iOS, отлично подходит для составления индивидуальных планов обучения junior, middle и senior разработчиков.

💙

https://www.notion.so/iOS-study-DataSource-by-Slava-Slutsker-3f79ba2c51ce45e9b32eae4666585e9d
Forwarded from Mobile Subscriptions
Ценообразование
Правильный прайсинг – одна из самых важных составляющих успешного приложения, которое зарабатывает на подписках.

По ссылке таблица из 100 самых популярных приложений с подписками в US сторе. Эти компании провели сотни A/B тестов, чтобы прийти к правильной комбинации: длительность/стоимость подписки.

Выбирайте приложения из интересующей вас категории и используйте как ориентир при установке цен в вашем приложении.
🍿 Reddit-клиент на SwiftUI

По ссылке лайв-кодинг сессия на Podlodka Crew с реализацией макета на #swiftui.

Вадим Булавин за 1.5 часа делает Reddit-клиент. Отличный способ на деле за короткий отрезок времени посмотреть особенности применения.

https://www.youtube.com/watch?v=_fO-vx6rm1M
🛫 VIPER deprecated, или Clean Architecture в SwiftUI

Отличная статья, которая описывает особенности построения архитектуры для приложений на SwiftUI.

Rounter не нужен, Presenter вообще превратился в пустой класс.

Этому сообществу нужен новый герой.

🦸‍♂️

https://medium.com/swlh/clean-architecture-for-swiftui-6d6c4eb1cf6a
Что будет выведено?
Anonymous Quiz
56%
Objc
26%
Swift
18%
Ошибка компиляции
🎻 10 самых популярных iOS библиотек в 2020

Кликбейтный заголовок, но, как мне кажется, изучение этих библиотек покроет 99% знаний, которые требуются iOS разработчику. Причём изучение не в плане апишки, а исходных кодов. Здесь и сложные анимации, работа с сетью, мультипоточность во всём своем многообразии, сложные алгоритмы и многое другое.

Берите одну либу на месяц и перекопайте исходники каждой. Через год будете отказываться от работы в Гугл. 😐

https://infinum.com/the-capsized-eight/top-10-most-useful-iOS-libraries
💂‍♀️Оптимизация времени запуска приложения и поиск проблем с помощью Instruments

Небольшая статья с разбором Instruments на реальном примере оптимизации приложения.

https://medium.com/flawless-app-stories/optimizing-app-launch-detecting-performance-issues-using-instruments-bca421da43b
Unowned vs Weak

Небольшая статья, которая поможет разобрать все особенности применения unowned и weak на примерах.

https://medium.com/flawless-app-stories/unowned-vs-weak-614ac71ac516
Хвала безумцам! Хвала Epic Games.
Forwarded from Mobile Subscriptions
🎉 Шикарная новость для разработчиков мобильных приложений!

Apple снизит App Store комиссию с 30% до 15% для компаний, зарабатывающих менее $1 млн в год.

Программа запускается 1 января 2021 года и будет основываться на данных 2020 года.

Больше деталей => https://techcrunch.com/2020/11/18/apple-to-reduce-app-store-fees-for-small-businesses-with-under-1-million-in-revenues
Кидайте эту статью своей API команде, если они просят отправлять header с префиксом X. Например, X-Auth-Token

Этот префикс был как стандарт много лет назад. Но уже лет 8 как deprecated и не рекомендуется к использованию.

https://tonyxu.io/posts/2018/http-deprecate-x-prefix/