Swift предоставляет множество встроенных форматтеров, один из которых форматтер списков ListFormatter (iOS 13+). Он помогает объединять списки элементов в удобочитаемые предложения:
#swift #list #formatter #listformatter
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
Продолжаю разбирать пропоузалы Swift. В этом предложении вводится новый атрибут
@specialized
, который позволяет в дженерик функции генерировать предварительно специализированные версии этой функции для определенных типов. Эта специализация создает пользовательскую реализацию функции, где "дженерики" заменяются определенными типами. Это позволяет оптимизировать функции, под конкретные типы: когда неспециализированная версия функции вызывается с одним из этих типов, компилятор генерирует код, который будет повторно отправлен в эти предварительно специализированные версии, если таковые имеются. Врядли это пригодится где-то кроме Foundation и специализированных фреймворков, но идея интересная.#swift #evolution
Please open Telegram to view this post
VIEW IN TELEGRAM
Группы задач существовали всегда, в GCD, OperationQueue и Combine. Они есть и в Swift Concurrency. Группы задач позволяют динамически запускать несколько дочерних задач и ожидать их выполнения или отмены. Группы задач используют совместную отмену и требуют проверки свойства Task.isCancelled (привет OperaionQueue). В статье на примерах рассматривается использование групп задач и оптимизация при работе с ними:
#swift #concurrency #group
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Ollama
Mattt продолжает вести блог NSHipster и я с удовольствием погружаюсь в старый добрый стиль и простоту статей. В этот раз тема актуальная - локальные LLM, на примере Ollama:
🟡 Позволяет запускать большие языковые модели на Mac.
🟡 Работает на основе llama.cpp, предоставляя удобное управление моделями.
🟡 Использует файлы моделей для настройки поведения моделей.
📁 Преимущества локального запуска моделей:
🔘 Конфиденциальность: данные не покидают устройство.
🔘 Стоимость: работа 24/7 без учета времени использования.
🔘 Задержка: отсутствие сетевых обращений, быстрое реагирование.
🔘 Контроль: отсутствие черного ящика и цензуры.
🔘 Надежность: отсутствие отключений и ограничений по квоте API.
🐥 Создание Swift приложений с помощью Ollama:
🟣 Ollama предоставляет HTTP API для интеграции с другими инструментами.
🟣 Мэт создал свой пакет Ollama Swift
🟣 Этот пакет в первую очередь для того чтобы делать утилиты для себя
🟣 Примеры реализации RAG-систем. Если для вас это новое сочетание букв-обязательно почитайте. Это способ использовать свою базу знаний при работе с LLM
#swift #llm #ollama
Mattt продолжает вести блог NSHipster и я с удовольствием погружаюсь в старый добрый стиль и простоту статей. В этот раз тема актуальная - локальные LLM, на примере Ollama:
#swift #llm #ollama
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2⚡2
Дизайн система? Нет, цветовая система! Очень интересный пример использования системы типов для работы с цветами:
Проблемы UIColor:
Новый подход с фантомными типами:
У автора большие ожидания от идеи системы типов в Swift, я же надеюсь что это не уйдет дальше идеи и мы останемся с текущей концепцией семантических цветов -
accentColor, primary, secondary
. Но сама по себе идея использования системы типов для реализации безопасного использования имеет шанс на жизнь#swift #color #system
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4❤3
Продолжаем разбираться с "упрощениями" в Swift. В этот раз, нас спасают от небезопасной работы с контейнерами и расширяют возможности использования новых типов
Span
и RawSpan
в существующих контейнерах.Мотивация
Многие типы контейнеров из стандартной библиотеки могут предоставлять прямой доступ к своему внутреннему представлению. До сих пор это можно было сделать только небезопасным способом. Стандартная библиотека предоставляет эту небезопасную функциональность с помощью функций, принимающих замыкания, таких как
withUnsafeBufferPointer()
, withContiguousStorageIfAvailable()
и withUnsafeBytes()
. У этих функций есть несколько недостатков, самый заметный из которых — использование небезопасных типов, что делает их неприемлемыми в средах с повышенными требованиями к безопасности. API, принимающие замыкания, также могут быть сложны в сочетании с новыми функциями и друг с другом. Эти проблемы решаются с помощью Span. Согласно этому предложению, совместимые типы стандартной библиотеки будут предоставлять доступ к своему внутреннему представлению через вычисляемые свойства типа Span
и RawSpan
.#swift #evolution #proposals
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Broadcast
А вот и статья про то как работать с unsafe в Swift сейчас и в каких случаях это может вам понадобиться:
Когда использовать небезопасные указатели?
Рекомендации по использованию небезопасных указателей:
Выводы
#unsafe #swift
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Новый протокол
~Copyable
появился в Swift 5.9. Мы уже разбирали Copyable, а вот и один из примеров поользы использование: на примере разбирается, когда вы стоит использовать ~Copyable
. Протокол ~Copyable
делает объект "не подлежащим копированию". По умолчанию Swift автоматически добавляет этот протокол для всех типов. #swift #copyable
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Kotlin Multiplatform Broadcast
Kotlin-to-Swift экспорт позволяет удобно использовать скомпилированный для Apple таргетов код из Swift удобным образом. Изменение добавили в Kotlin 2.2.0-Beta2
Ключевые фичи:
👉 Поддержка многомодульности: каждый Kotlin модуль - отдельный Swift модуль
👉 Поддержка пакетов в коде
👉 type alias теперь доступны из Swift
👉 Улучшения в nullability с примитивными типами
👉 Вызов перегруженных функций в Kotlin из Swift кода
👉 Можно изменить имя модуля
Фича всё ещё в экспериментально режиме и для её включения надо выполнить ряд действий (подобно как раньше в XCode проект подключался KMP модуль)
#kotlin #swift #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
Переворачиваем вечный SwiftUI календарь при помощи UIKit
У этого канала своя традиция на 3 сентября😅. Специально для вас сделал демо проект с которым можно переворачивать календарь прямо на своем телефоне
👉 70 строк кода
👉 UIPageViewController
👉 Всего 2 инстанса и полный реюз 3 сентября
#swift #swiftUI #UIKit #humor
У этого канала своя традиция на 3 сентября😅. Специально для вас сделал демо проект с которым можно переворачивать календарь прямо на своем телефоне
👉 70 строк кода
👉 UIPageViewController
👉 Всего 2 инстанса и полный реюз 3 сентября
#swift #swiftUI #UIKit #humor
Хабр
Переворачиваем вечный SwiftUI календарь при помощи UIKit
Данная статья написана в развлекательных целях. Если вам интересно следить за самыми последними новостями iOS разработки и получать подборку интересных статей по этой тематике, тогда вам стоит...
👍5