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

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

По всем вопросам обращаться к @itereznikov
Download Telegram
Полезный материал о базовых вещах с памятью

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

https://youtu.be/TajLTcjBgIg
7👍1🤮1
Optional Binding

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

Если последний аргумент функции – замыкание, ее можно вызвать с помощью хвостового замыкания. Для этого опустите последний аргумент в вызове метода и закройте круглые скобки. Затем определите замыкание сразу после закрытия круглых скобок.
8🤮1
Media is too big
VIEW IN TELEGRAM
Для чего нужны closures (замыкания) в Swift и как с ними работать?

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

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

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

🧐 К концу этой заметки автор обещает объяснить всё, что необходимо знать для эффективного использования замыканий в приложении.
👍7🤮1
Перечисления

Перечисления полезны, когда нам нужно работать с группой однотипных значений. Когда же создается пример для перечисления, значение обязательно должно быть равным какому-либо случаю.
👍9💩2
Вариативные параметры

Вариативный параметр принимает ноль или более значений определенного типа. Он обозначается тремя последовательными точками, после типа данных параметра в декларации функции. Данный метод – хорошая альтернатива, когда для работы нам нужно только одно значение. Swift может конвертировать одно значение в набор переменных.
👍6👎3
Полезная статья о том, как улучшить качество кода

Разница в том, что тут автор и на словах предлагает решение, и инструменты, которые помогают следить за качеством кода и улучшать его! 👍

Читаем и улучшаем качество кода 🔥
https://kwnstantinosnikoloutsos.medium.com/who-else-wants-to-improve-ios-codebase-quality-3f7c77a2dd10
🔥8🤮2👍1
Наблюдатели

Наблюдатели выполняют код, когда меняется свойство. Наблюдатель willSet создается прямо перед изменением свойства, он создает переменную newValue. Наблюдатель didSet срабатывает сразу после изменения свойства и создает oldValue.
👍9🤮2👎1
Приватные сеттеры

Доступ к свойствам, помеченным как private(set), можно получить из-за пределов
структуры, но присвоить только внутри нее. Это позволяет сеттеру быть более строгим, чем геттеру.
👍7🤮2
3 способа использования enum, которые должны быть в вашем арсенале

💪 Перечисление (enum) - это очень мощный тип в Swift. Каждый из нас использует его практически в каждом проекте.

В публикации рассматривается три блока:

1️⃣ Сложные случаи с привязкой значений.

2️⃣ Если нас интересуют конкретный кейс перечисления, то можно использовать if let и guard let.

3️⃣ Если связанное значение optional, то также можно использовать соответствующий шаблон. Это будет более понятно на конкретных примерах из статьи.
🔥4🤮2
Raw Values

Перечисления могут иметь raw value, связанное с каждым случаем, путем добавления : RawValueType после имени перечисления. Raw value может быть присвоено типам String, Character, Int, Double или Float. Перечисления с raw value могут быть созданы с помощью init(rawValue:).
🔥6🤮2
Метод наборов .subtracting()

Sets (наборы) – неупорядоченные коллекции уникальных элементов. Вы можете создать новый набор, который будет состоять из элементов первого набора, но при этом без общих элементов двух входных наборов. Для этого используйте метод .subtracting().
👍3🤮2
Проблемы многопоточки: Race Condition vs Data Race

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

Race condition и data race — две разные проблемы многопоточности, которые часто путают.

Эти проблемы очень похожи, но есть различия:

Race Condition — это недостаток, возникающий, когда время или порядок событий влияют на правильность программы.

Data Race — это состояние когда разные потоки обращаются к одной ячейке памяти без какой-либо синхронизации и как минимум один из потоков осуществляет запись.
👍3💩2
Замыкания

Замыкания – это автономные функциональные блоки. Как и функции, замыкания принимают аргументы, выполняют инструкции и возвращают значение или Void.
👍113
Передача замыканий в функции

Замыкания могут быть переданы в качестве аргументов в функции. Передача замыканий функциям позволяет указать, как должна работать функция.
🔥11👍2
🧑‍💻Class && Struct (классы и структуры)

💻Отличный материал, который раскрывает основные отличия структуры от классов, а так же их применение!

По умолчанию Apple рекомендует использовать структуры. Структуры также полезны в следующих сценариях:
- Используйте структуры для простых типов данных. Воспринимайте их как простые базы данных, которые вы можете использовать в своем коде. Поскольку они четко определены и часто не нуждаются в сложных отношениях между объектами.
- В многопоточной среде, например, с подключением к базе данных в другом потоке, структуры более безопасны. и могут быть безопасно скопированы из одного потока в другой. Классы не имеют присущей им безопасности, если только они не намеренно сделаны поточно-ориентированными.
- Когда свойства структуры в основном являются значимыми типами, например String, имеет смысл обернуть их в структуру вместо класса.
Использование структур имеет дополнительное преимущество - вам проще анализировать изменения данных в вашем коде. Когда тип является структурой, вы можете быть уверены, что никакая другая часть вашего кода не сможет удерживать ссылку на объект. То есть структура не может быть изменена какой-либо другой частью вашего кода.

А дальше в статье https://habr.com/ru/post/592341/
🔥7😱2
Свойство .count

Свойство .count возвращает целое число, представляющее количество пар ключ-значение в словаре.
👍7
Свойство .isEmpty

Свойство .isEmpty возвращает true, если в словаре нет пар ключ-значение, false – если словарь содержит пары ключ-значение.
👍11
Верстка кодом🗿

Отличный материал, хорошая подача. Для тех кто хочет научиться верстать UI элементы кодом. Советую к прочтению. 🏰

https://www.hackingwithswift.com/read/8/2/building-a-uikit-user-interface-programmatically
👍10
Метод init()

Структуры могут иметь метод init() для инициализации значений свойств экземпляра. В отличие от других методов, метод init() не требует ключевого слова func. В его теле используется ключевое слово self для ссылки на фактический экземпляр структуры.
👍9