TGViewer
Channel Public Channel
iOS Mobile | YeaHub

iOS Mobile | YeaHub

@yeahub_ios_mobile

Теория, подготовка к интервью и курсы для iOS разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Subscribers
248
Photos
405
Videos
36
Links
586

Showing posts older than #427 · Back to latest

Older Posts 20 shown
Post #426 144
#полезное
📞 SwiftUI совет

Легко форматируй числа в удобочитаемом виде — например, 1K вместо 1000 — прямо внутри Text

👉Новости 👉База вопросов
  • ❤ 1
Post #425 146
#полезное
📞 Новое в SwiftUI

В iOS 26.0+ теперь можно отображать бейджи на элементах тулбара с помощью модификатора badge().

Отлично подойдёт для таких кнопок, как уведомления, корзина или сообщения.

👉Новости 👉База вопросов
  • ❤ 2
  • 👍 2
Post #424 203
🖥 Middle IOS разработчик в компанию Effective Mobile.

Техническое собеседование. Зима 2024.

Вопросы:
- В чем разница между структурами и классами?
- Что такое Optional в Swift? Как его создать?
- Что такое перечисления (enumerations) в Swift?
- Как работает ARC (Automatic Reference Counting) в Swift?

Все вопросы можно посмотреть на нашей платформе

#собес
  • ❤ 2
Post #423 187
#полезное
😵‍💫 Using defer in Swift to manage state cleanup

В Swift оператор defer позволяет гарантировать выполнение кода очистки при выходе из текущей области видимости, независимо от того, завершилась ли функция успешно или с ошибкой.

Использование defer уменьшает вероятность ошибок в коде, особенно в больших функциях, где могут быть добавлены новые возвраты или отмены задач.

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

Пример использования defer включает управление индикатором загрузки, который показывается во время выполнения асинхронной операции и скрывается по завершении, что предотвращает пропуск очистки состояния:

func fetch() async {
isLoading = true
defer { isLoading = false }

do {
articles = try await service.fetchArticles()
} catch {
self.error = error.localizedDescription
}
}


👉Новости 👉База вопросов
  • ❤ 1
  • 🔥 1
Post #422 158
#статьи
😇 Взгляд на процесс отладки (с реальными примерами)

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

👉Новости 👉База вопросов
  • ❤ 1
Post #421 161
#Собес #git
🤔 Что делает Git-клон?

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

👉Новости 👉База вопросов
Post #420 161
#полезное
🤓 Power of Swift Macros

Макросы в Swift достаточно удобная штука, если их правильно применять
Например, они позволяют автоматизировать создание представлений SwiftUI для UIKit, упрощая процесс написания повторяющегося кода.

🟠 Для создания макроса необходимо инициализировать новый Swift пакет с помощью команды swift package init --type macro --name RepresentableMacros

🟠 Основной код макроса включает в себя извлечение метаданных из объявления класса и создание структуры SwiftUI, которая реализует протокол UIViewRepresentable.

🟠 Тестирование макроса включает проверку различных случаев, таких как наличие модификаторов и правильность обработки классов, не являющихся представлениями UIKit.

import SwiftCompilerPlugin
import SwiftSyntax
import SwiftSyntaxBuilder
import SwiftSyntaxMacros

public enum ViewRepresentableError: CustomStringConvertible, Error {
case onlyApplicableToView

public var description: String {
switch self {
case .onlyApplicableToView:
"@ViewRepresentable is only applicable to UIKit View."
}
}
}

public struct ViewRepresentable: PeerMacro {
public static func expansion(
of node: AttributeSyntax,
providingPeersOf declaration: some DeclSyntaxProtocol,
in context: some MacroExpansionContext
) throws -> [DeclSyntax] {
// here will be our magic code
return []
}
}


👉Новости 👉База вопросов
Artur Gruchała Power of Swift Macros As iOS devs, sometimes We have to write repeatable code. This tedious task is very boring, error-prone, and unsatisfying. Instead of falling into despair we can elevate our experience with Swift Macros! We will create a macro which will automate creating…
Post #419 120
#полезное
😎 Какая средняя зарплата мобильного разработчика в мире?

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

К слову, кроме традиционных составляющих, разработчики ответили и на вопросы об AI: пользуются около трети, а вот готовы максимально доверять результатам помощников - только 3.1%.

А вот и результаты опроса по зарплатам для мобильных разработчиков (внимание, результаты до налогов):

🇺🇸 $ 170 000 в год.
🇩🇪 $ 93 972 в год.
🇬🇧 $ 99 383 в год.
🇫🇷 $ 63 228 в год.
...
🇮🇳 $ 10 462 в год.

Увеличение по сравнению с 2024 годом - на 20%.

👉Новости 👉База вопросов
Post #418 104
#полезное
😱 Threads против Tasks в Swift Concurrency

По мнению Антуана из статьи ниже, разработчики могут задаться вопросом, чем различаются треды и таски, если ранее писали на Swift или Objective-C, используя GCD и традиционные API.

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

Но в современной разработке на помощь приходит Swift Concurrency и методология async/await.

Вместо того чтобы создавать метод и юзать замыкание, теперь нужен Task { ... } для запуска асинхронного контекста.

Следующий вопрос, который появится: где будет выполняться созданная нами задача - в основном или фоновом потоке?

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

👉Новости 👉База вопросов
Post #417 94
#Собес #ios
🤔 Что такое цикл сильных ссылок и как его избежать?

Цикл сильных ссылок возникает, когда два или более объектов удерживают друг друга сильными ссылками, и счётчики не обнуляются. Такое «замыкание» блокирует освобождение памяти. Чтобы избежать, используют слабые ( weak ) или безвладельческие ( unowned ) ссылки для «обрыва» цикла.

👉Новости 👉База вопросов
Post #416 89
#статьи
🥄 Swift Actors: What Are They For?

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

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

👉Новости 👉База вопросов
Post #415 71
#полезное
🛞 Что изменилось в поиске iOS и iPadOS 26

В iOS и iPadOS 26 добавилось несколько новых API для обновления визуального стиля и размещения поисковой панели.

В этом посте Наталья Панферова рассматривает, как можно использовать эти улучшения для реализации поискового интерфейса.

Рассмотрены два распространенных шаблонах поиска в приложениях: на панели инструментов и на панели вкладок.

Кроме этого, приведены примеры: как работает каждый из этих вариантов, что изменилось и как реализовать их в SwiftUI.

👉Новости 👉База вопросов
Post #414 71
#полезное
👍 LLM Leaderboard - Сравнительный анализ 100 AI-моделей от OpenAI, Google, DeepSeek и других

Делюсь полезным ресурсом, на котором можно чекнуть более 100 LLM по ключевым метрикам: цене, производительности и скорости (скорость вывода - токены в секунду и задержка - TTFT), размеру окна контекста и другим.
Посмотреть можно тут.

👉Новости 👉База вопросов
  • ❤ 1
Post #413 64
#Собес #ios
🤔 В чём разница между weak и unowned? Где предпочтительнее использовать unowned?

weak хранит ссылку, которая автоматически обнуляется, когда объект деинициализируется, и требует опционального типа. unowned - неконтролируемая ссылка, не обнуляется и объявляется не- опциональным. unowned используют, когда зависимый объект гарантированно живет дольше или так же долго, как и владелец.

👉Новости 👉База вопросов
Post #412 69
#полезное
📞 SwiftUI совет

Начиная с iOS 26.0, можно использовать listSectionMargins() для управления отступами вокруг каждой секции в списке.

👉Новости 👉База вопросов
  • 🔥 1
Post #411 67
#полезное
👨‍💻 SwiftUI совет

Начиная с iOS 18.0, к секциям в List можно привязывать действия с помощью модификатора sectionActions()

👉Новости 👉База вопросов
  • 👍 1
Post #410 75
#новости
😇 Apple представили Retention Messaging API

Будет полезно не только инди-разработчикам, но и компаниям, чей бизнес целиком завязан на подписках.

С помощью нового API можно выбрать, какое сообщение показывать пользователям, когда они просматривают инфу о подписке и могут отменить ее.

Нам теперь доступна возможность разработки и настройки таких экранов разных для продуктов и локалей.

Всего 4 опции: текст, текст+картинка, сообщение о переходе на новый план с текстом и другой подпиской, а также рекламный оффер с текстом и скидкой (или другим уровнем).

Вся документация уже доступна здесь.

👉Новости 👉База вопросов
Post #408 83
#статьи
😬 FaultOrdering – ускоряем запуск приложения

Как вы помните, Sentry недавно купили Emerge Tools. Неожиданно, после этого они решили выложить свой ранее платный инструмент в опенсорс. FaultOrdering – пакет, автоматически генерирующий Order-файлы во время прогона UI-тестов. А использование этих файлов позволяет ускорить запуск приложения где-то на 20%.

👉Новости 👉База вопросов
GitHub GitHub - getsentry/FaultOrdering: 📱Generate optimized order files directly from an Xcode UI test. Order files optimize app launch… 📱Generate optimized order files directly from an Xcode UI test. Order files optimize app launch times, with improvements in production measured to be over 20% - getsentry/FaultOrdering
Post #407 74
#полезное
😐 Секретный способ для скругления и тени одновременно в UIKit

Все знают о сложности подобной задачи в UIKit.

Оказывается, среди недокументированного API есть способ для реализации такого комбо.

CALayer позволяет юзать свойства для изменения rim, если назвать его попроще - ободка, но не границы (которого вы не найдёте в доках и даже AI вам в этом не поможет).

Можно настраивать ширину, цвет (обратите внимание, нужен именно cgColor) и прозрачность.

view.layer.setValue(true, forKey: "softRim")
view.layer.setValue(20, forKey: "rimWidth")
view.layer.setValue(UIColor.yellow.cgColor, forKey: "rimColor")
view.layer.setValue(1.0, forKey: "rimOpacity")


Большая разница по сравнению с border, которая рисуется внутрь, этот ободок позволяет расширять наше вью и добавлять эффект снаружи.

👉Новости 👉База вопросов
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →