Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.73K subscribers
1.53K photos
72 videos
52 files
4.31K 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