Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.85K subscribers
1.45K photos
68 videos
52 files
4.2K links
Все самое полезное для мобильного разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
🍏 Что такое Lazy Variables (ленивые переменные)? Когда их следует использовать?

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

Например:

lazy var tallest: Person? = {
return people.max(by: { $0.height < $1.height })
}()


Чтобы узнать больше о lazy, ознакомьтесь с этой статьей.
#swift
4
🍏 Что такое перечисления (enumerations) в Swift?

Перечисление (enumeration)- это группа связанных значений.

Перечисления позволяют писать безопасный для типов код.

enum Direction {
case North
case East
case South
case West
}


Теперь в своем коде вы можете вызвать, например, Direction.North, вместо того чтобы использовать мистическую строку «North» (которая легко может быть неправильно написана и вызвать раздражающие ошибки).

Больше информации о перечислениях можно прочесть в этой статье.

#swift
🥱51
🔧 Строим архитектуру для SwiftUI

SwiftUI фундаментально отличается от UIKit, поэтому он требует своего подхода к архитектуре. Известные паттерны, такие как MVP, MVVM и другие, в чистом виде не адаптированы под особенности SwiftUI.

В статье автор рассказывает о создании собственной архитектуры для разработки на SwiftUI.

👉 Читать статью

#новость #ios #swift
😁41🥱1
🍏 typealias в Swift

Typealias, как следует из названия, является псевдонимом для существующего типа данных.

Вы можете создать его следующим образом:

typealias Weight = Float


Теперь вы можете использовать Weight вместо Float:

let mass1: Weight = 150.0
let mass2: Weight = 220.0
let total: Weight = mass1 + mass2


#swift
🥱53
📝 Вызов защищённого API из iOS-приложения на Swift

Как Swift‑разработчику, в какой‑то момент вам, скорее всего, понадобится добавить в своё приложение аутентификацию пользователей или, как её ещё называют, логин и логаут.

В этой статье автор показывает, как настроить Auth0 для получения токена доступа OAuth 2.0, который позволит вам безопасно, надёжно и от имени пользователя вызывать защищённый API из вашего приложения.

👉 Читать статью

#новость #ios #swift
🔥2
🌗 Темы в современных iOS-приложениях с UITraitCollection

Совсем недавно (с iOS 17) Apple представила удобный способ обработки смены тем в приложениях для iOS. Раньше это было довольно сложно, но с появлением UITraitAppearance стало проще.

Эта статья представляет собой законченное описание того, как добавить тематическое оформление в реальное приложение.

👉 Читать статью

#новость #ios #swift
🥰3
🎨 Как использовать смешивание цветов в SwiftUI

В последнем обновлении SwiftUI Apple представила новую функцию под названием «смешивание цветов». Эта функция открывает новые творческие возможности для разработчиков, позволяя выполнять различные задачи с цветами.

Автор статьи рассматривает смешивание цветов в SwiftUI и его потенциальное применение.

👉 Читать статью

#новость #ios #swift
🤩2
⬇️ Как снизить потребление оперативной памяти в iOS-приложении

Чтобы избежать перегрузки системы и крашей приложения, iOS-команда AliExpress решила разработать инструмент для мониторинга памяти.

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

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

👉 Читать статью

#новость #ios #swift
2
🍏 Что такое опциональное связывание (optional binding)

Опциональное связывание проверяет, содержит ли опция значение или нет. Если опция имеет значение, опциональное связывание делает это значение временно доступным:

Например, следующий код проверяет, является ли имя nil или нет. Если нет, то создается временная константа realName и ей присваивается значение name.

var name: String? = «Charles»
if let realName = name {
print (realName)
}


Вывод:

Charles


#swift
1
🍏 Что делает init() в Swift

Метод init() используется для инициализации экземпляра.

Инициализация означает подготовку экземпляра (класса, структуры или перечисления) к использованию.

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

#swift
🥰6🥱5😁2
📃 Sheet с автоматическим подсчётом высоты и поддержкой iOS 15

В этой статье автор рассказывает о том, как создать нативный Sheet, который автоматически подсчитывает свою высоту в зависимости от контента (SwiftUI View).

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

👉 Читать статью

#новость #ios #swift
1
🍏 Что нас ждёт в Swift 6

Как вы знаете, прошлой осенью зарелизился Swift 6, а вместе c ним появились и строгие проверки для защиты от датарейсов, связанные со Swift Concurrency. В Swift 5 такие проверки включались при помощи флага -strict-concurrency=complete, но, по заявлениям разработчиков Swift, были слишком консервативными.

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

👉 Читать статью

#новость #ios #swift
🥰5
🗺️ Рисуем карты с помощью Swift Charts

Swift Charts — это мощный фреймворк, позволяющий визуализировать данные различными способами. Оказывается, с его помощью можно рисовать карты.

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

👉 Читать статью

#новость #ios #swift
🥰32👍1
🍏 Для чего нужен оператор вида «??»?

Оператор двойного вопросительного знака ?? известен как оператор объединения (слияния) nil. Он возвращает значение в левой части, если оно не равно nil. Если левая часть равна nil, то возвращается значение в правой части.

Его можно использовать как сокращение для проверки того, является ли опциональное значение nil. Например, вы можете заменить это:

var name: String?
if name != nil {
print(name)
} else {
print(«N/A»)
}


На это:

print(name ?? «N/A»)


#swift
🤩4👍3
💻 Apple выпустила новое расширение Swift для VS Code

В блоге Swift-разработчиков рассказали о релизе нового расширения Visual Studio Code для работы с кодом на Swift. Компания хочет предоставить пользователям всех платформ одинаково удобные инструменты.

Apple продолжает реализовывать планы по трансформации Swift в язык программирования для кроссплатформенной разработки. Новое расширение для VS Code предназначено для разработчиков серверных приложений, прошивок для IoT-устройств, приложений для Linux и Windows.

👉 Подробнее в статье

#новость #ios #swift
🤩4🔥1
⚒️ Как устроен пользовательский интерфейс SwiftUI

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

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

Автор статьи предоставляет полный обзор того, как SwiftUI устроен под капотом.

👉 Читать статью

#новость #ios #swift
🤩4🤔1
🍏 Чем будет свойство pounds в следующем примере?

class Weight {
var kilograms: Float = 0.0
var pounds: Float {
get { return (kilograms * 2.205)}set(newWeight) {
kilograms = newWeight /2.205
}}}
let weight = Weight()
weight.kilograms = 100print(weight.pounds) // prints '220.5'weight.pounds = 315print(weight.kilograms) // prints '142.85715'


Свойство pounds также известно как вычисляемое свойство.

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

• Метод get выполняет вычисление «по требованию», когда вызывается weight.pounds.

• Метод set обновляет килограммы, когда обновляются фунты. (Обратите внимание, что метод set является необязательным, и вам не нужен такой метод для создания вычисляемого свойства).

#swift
2
📱 Осваиваем скроллинг в SwiftUI

Начиная с iOS 17 в SwiftUI появилась функция scrollTargetBehavior, позволяющая разработчикам управлять поведением прокрутки с большей точностью. Будь то выравнивание представлений или реализация пользовательских эффектов пагинации, ScrollTargetBehavior обеспечивает надежную поддержку. Что еще более важно, разработчики могут создавать собственные реализации функции для удовлетворения конкретных потребностей.

В этой статье на реальном примере автор показывает, как использовать scrollTargetBehavior и в конечном итоге реализовать пользовательскую логику управления прокруткой.

👉 Читать статью

#новость #ios #swift
🥰41
🍏 Назовите 5 утверждений передачи управления (Control Transfer Statements)

Вот они слева-направо (сверху-вниз):

Break

Continue

Fallthrough

Throw

Return

Операторы передачи управления изменяют порядок выполнения вашего кода.

Например, вы можете использовать оператор передачи управления break для завершения выполнения цикла for, когда продолжение цикла считается ненужным:

for choice in choices:if isCorrect(choice):print(«Correct choice found!»)break


#swift
2
😴 Task.sleep() и Task.yield()

В Swift Concurrency мы можем использовать Task.sleep() и Task.yield(), чтобы перевести конкретную задачу в режим ожидания или приостановки в течение определённого периода времени. Оба они выглядят и ведут себя одинаково, но есть несколько существенных различий, о которых следует знать Swift-разработчикам.

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

👉 Читать статью

#новость #swift
🤩31👍1