EasySwift iOS🍏
3.03K subscribers
269 photos
8 videos
394 links
Все самое интересное в мире iOS разработки 🧑🏻‍💻

Предложить статью или новость: @EasySwiftBot

По всем вопросам обращаться к @itereznikov
Download Telegram
Функция stride()

Если нам нужно в массиве пройтись по значением с определенным шагом, стоит воспользоваться функцией stride(). Первый аргумент - начальное число. Второй аргумент - до какого числа идет перемещение. Третий аргумент - шаг перемещения. Он может быть как положительным, так и отрицательным.
👍15😱1
Optional Binding

Optional Binding позволяет проверить, содержит ли опционал .some-значение. Если содержит, извлекает его и предоставляет к нему доступ с помощью локальной переменной (обычно константной). Optional Binding работает в контексте конструкций if, while и guard. Если опционал в состоянии nil, запускается блок else.
👍7
Приватные сеттеры

Доступ к свойствам, помеченным как private(set), можно получить из-за пределов
структуры, но присвоить только внутри нее. Это позволяет сеттеру быть более строгим, чем геттеру.
👍9🤯2
Channel name was changed to «EasySwift iOS»
Для чего нужны closures (замыкания) в Swift и как с ними работать?

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

Например, когда они используются в качестве completion handlers или передаются в приложении, чтобы их можно было вызвать позже.

В своём посте автор объясняет, что такое замыкания в Swift, как они работают и, самое главное, показывает различные примеры замыканий с возрастающей сложностью.

В этой заметки автор обещает объяснить всё, что необходимо знать для эффективного использования замыканий в приложении.
👍11
Наблюдатели

Наблюдатели выполняют код, когда меняется свойство. Наблюдатель willSet создается прямо перед изменением свойства, он создает переменную newValue. Наблюдатель didSet срабатывает сразу после изменения свойства и создает oldValue.
👍11🔥1
Параметры In-Out

В Swift аргументы функции – константы. В результате этого невозможно изменить значение параметра, которое передается в функцию. Параметр in-out позволяет функции переназначить значение переменной. Для этого параметр помечается inout, используется & при передаче параметра в вызов функции.
🔥14👍1
Проверяем, сколько раз символ встречается в строке

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

👀Смотреть видео
👍9
Вариативные параметры

Вариативный параметр принимает ноль или более значений определенного типа. Он обозначается тремя последовательными точками, после типа данных параметра в декларации функции. Данный метод – хорошая альтернатива, когда для работы нам нужно только одно значение. Swift может конвертировать одно значение в набор переменных.
👍8🤯2
Grand Central Dispatch

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

GCD реализован на языке C, поэтому фактически является низкоуровневым фреймворком.

Queue
Queue (очередь) – является основным примитивом GCD. Очередь представляет собой сущность, выполняющую задачи, поступающие на вход, на одном или множестве потоков. Представьте себе очередь на кассу в любом продуктовом магазине. В данном случае касса, которая вас обслужит – это поток, вы – сама задача, а все вместе – очередь.

Очередь работает по принципу FIFO, таким образом первая задача на очереди будет первой направлена на выполнение на потоке.
👍9🔥2
Хвостовое замыкание

Если последний аргумент функции – замыкание, ее можно вызвать с помощью хвостового замыкания. Для этого опустите последний аргумент в вызове метода и закройте круглые скобки. Затем определите замыкание сразу после закрытия круглых скобок.
👍9😱1
Есть много споров антипаттер ли одиночка или нет. Юзать его — ваша ответственность. Критично же юзать и не знать какие риски на себя берешь. Поэтому вкратце:

1. Синглтон нарушает SRP (Single Responsibility Principle) — класс синглтона, помимо того чтобы выполнять свои непосредственные обязанности, занимается еще и контролированием количества своих экземпляров.

2. Глобальное состояние. Про вред глобальных переменных вроде бы уже все знают, но тут та же самая проблема. Когда мы получаем доступ к экземпляру класса, мы не знаем текущее состояние этого класса, и кто и когда его менял, и это состояние может быть вовсе не таким, как ожидается.

есть неплохая статья, которая описывает все риски использования синглотона и его альтернативы

https://habr.com/ru/company/vk/blog/334078/
🔥6
Вариативные параметры

Вариативный параметр принимает ноль или более значений определенного типа. Он обозначается тремя последовательными точками, после типа данных параметра в декларации функции. Данный метод – хорошая альтернатива, когда для работы нам нужно только одно значение. Swift может конвертировать одно значение в набор переменных.
👍8
Clean Architecture и MVVM в iOS: пример реализации проекта

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

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

📖 В этой статье на рабочем примере проекта показывается, как архитектурные паттерны MVVM и Clean Architecture могут быть применены в приложении для iOS.

🛠 Проект на Github, который может быть использован в качестве шаблона.
🔥8
Крутая статья про Архитектуры.

Каждый из нас всегда хоть раз задумывался, а по какой архитектуре я буду писать своё приложение? Каких принципов я буду придерживаться?

Держите, архитекторы.

https://habr.com/ru/company/badoo/blog/281162/
👍12
🗺📱Дорожная карта iOS Developer 2022

Будет полезно начинающим, которые самостоятельно изучают язык, чтобы составить свою, наиболее эффективную стратегию на основе best practices
🔥17👍5🤯4😁1
Интересная статья о том, как защитить своё приложение от злоумышленников, которые захотят что-то там украсть у вас или у ваших пользователей

Автор рассказывает на примере банковского приложения, но всё это может быть актуально и для кучи других (любых?) приложений 🏦

Разработчики банковских приложений, поделитесь, что из списка используете? И что поверх этого списка? 😎

https://medium.com/dbs-tech-blog/develop-a-secure-banking-mobile-application-with-these-eight-security-methods-dbf126fc7979
🔥5
В GCD есть свой механизм барьеров.

Барьеры GCD делают одну интересную вещь — они заставляют очередь временно не начинать новые задачи и ждут, пока все работающие в очереди задачи закончат свою работу, а затем выполняют свое замыкание.

Как только барьер начинает выполнять свое замыкание, он обеспечивает, чтобы очередь не выполняла никакие другие замыкания в течение этого времени и по существу работает как синхронная функция. Как только замыкание с барьером заканчивается, очередь возвращается к своей обычной работе, обеспечивая гарантию того, что никакая запись не будет проводиться одновременно с чтением или другой запись
🔥8