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

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

По всем вопросам обращаться к @itereznikov
Download Telegram
Перечисления

Перечисления полезны, когда нам нужно работать с группой однотипных значений. Когда же создается пример для перечисления, значение обязательно должно быть равным какому-либо случаю.
👍7
Метод наборов .subtracting()

Sets (наборы) – неупорядоченные коллекции уникальных элементов. Вы можете создать новый набор, который будет состоять из элементов первого набора, но при этом без общих элементов двух входных наборов. Для этого используйте метод .subtracting().
👍8
Объединение массивов

Если у вас есть два однотипных массива и вы хотите объединить их, то вы легко можете сделать это с помощью операции сложения.
13
Написание хорошего и переиспользуемого кода - это не только про архитектуру. Протоколы и дженерики - два крутых инструмента для того, чтобы сделать код гибким и переиспользуемым 🤸
Вот отличная статья про some и any кейворды с дженерик протоколами в Swift 5.7 🔥
https://www.swiftbysundell.com/articles/referencing-generic-protocols-with-some-and-any-keywords/
👍7
Передача замыканий в функции

Замыкания могут быть переданы в качестве аргументов в функции. Передача замыканий функциям позволяет указать, как должна работать функция.
🔥9
Замыкания

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

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

https://youtu.be/TajLTcjBgIg
👍5🔥4
Raw Values

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

Доступ к свойствам, помеченным как private(set), можно получить из-за пределов
структуры, но присвоить только внутри нее. Это позволяет сеттеру быть более строгим, чем геттеру.
👍8
HTTP - протокол прикладного уровня, который используется для передачи данных.

Основной http является клиент-сервер.

Каждое HTTP сообщение состоих из трех частей, которые передаются в указанном порядке
1. стартовая строка - определяет тип сообщения
2. заголовки - характерезуют тело сообщения, параметры передачи и прочие сведения
3. тело сообщения - непосредственно данные сообщения

Методы HTTP запросов:

get - используется для запроса содержимого указанного ресурса.

head - аналогичен запросу get, за исключением того, что в ответете сервера отсутствует тело

post - применяется для передачи данных заданому ресурсу

put - применяется для загрузки содержимого запроса

patch - аналогично put, но только применяется к фрагменту ресурса

delete - удаляет указанный ресурс

trace - возвращает полученный запрос

connect - преобразует соединение запроса в прозрачный TCP/IP-туннель
👍12
Функция 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