TGViewer
Channel Public Channel
Prefire iOS

Prefire iOS

@prefire_ios

Чат/блог о современной 🍏iOS разработке

Пробустить канал → https://t.me/prefire_ios?boost

Автор: @barredewe
Subscribers
980
Photos
101
Videos
7
Links
103

Showing posts older than #104 · Back to latest

Older Posts 19 shown
Post #103 699
🛠 Xcode 26 — теперь с AI прямо внутри

Apple на WWDC представила Xcode 26 — и это, пожалуй, самая «умная» версия Xcode за всё время.

👉 Внутри редактора теперь можно прямо подключать ChatGPT или любую другую LLM — по API-ключу или даже локально (если у вас Mac на Apple Silicon).
👉 Можно писать код, тесты, доку, фиксить баги, улучшать дизайн — и всё это в привычном Xcode, не прыгая по чатам.
👉 ChatGPT встроен сразу, можно начинать без аккаунта. А если есть подписка — подключаете её и получаете больше возможностей.

Кроме этого:
✨ Новый интерфейс Coding Tools — умные подсказки, генерация playground’ов, фиксы прямо в коде.
✨ Переработанная навигация.
✨ Улучшенная работа с локализациями.
✨ И даже поддержка полного Voice Control — можно продиктовать код на Swift и управлять Xcode голосом.

🤖 Мне особенно интересно посмотреть, насколько удобно будет работать с локальными моделями (например, Llama) прямо из Xcode — это может быть реально крутой апгрейд.

📝 А вы будете ставить Xcode 26 beta? Планируете использовать встроенные LLM?
  • 🔥 11
  • 👍 7
  • ❤ 4
  • ❤‍🔥 2
Post #102 607
Real Time Новости с WWDC 💻

👌iOS 26:
- Русский язык в Apple Intelligence не завезли, хотя завезли еще несколько языков
- Foundation Models framework - встраивание Apple LLM моделей в свое приложение.
- Новый дизайн Liquid Glass на всех платформах (прозрачность как в Vision OS)
- Названия и правда поменяли, теперь все версии систем будут называться по номеру года 2025 -> iOS 26
- Добавили 3D эффект на ваши фото с возможностью установки на экране блокировки (красивое)
- Редизайн приложения камеры (дождались нормального переключения 1800p -> 4k)
- Обновили FaceTime
- А вот обнова CarPlay + CarPlay Ultra (вместо спидометра) интересная, сделали норм интеграцию с авто, а не как отдельное приложение и добавили виджеты
- Во всей ОС добавили android like нижние кнопки с действиями (хм, спорно, но ок)
- Обновили iMessage: чат для групп, кастомный фон и др. (ТГ все равно лучше)
- Image Playground API - новый фреймворк для встравивания генерации изображений в ваше приложение.
- Call Translation API - апи для лайвтайм перевода голоса.
- Обновление Music app, отличный пример использования Translation API, добавили перевод текста песен.
- Добавили отображение заказов в Apple Pay (Не, в РФ все еще не работает)
- Добавили новое приложение Games. Хотел бы сказать что аналог Steam, но, по сути, просто перенесли вкладку из AppStore.
- Visual Intelligence - поиск по фото, выделение текста и поиск в ChatGPT.

Как по мне, самое крутое в iOS 26 - редизайн. Ради этого стоит обновиться. (А хотелось бы что то топовое с локальными LLM)


🐱 macOS Tahoe
- Новый дизайн (как в iOS 😏)
- Много персонализации по цвету и прозрачности
- LiveActions (как в iOS 😏)
- Intelligent actions, можно настраивать action как сейчас, но уже используя AI модели работающие на устройстве или ChatGPT.
- Обновление Spotlight: Добавили поиск с AI и еще много мелких доработок (похоже на RayCast)
- Приложение Games (как в iOS 😏)
- Metal 4, показали inZoi на mac как пример. Вот это супер новость про metal, ждем тесты производительности 💪

Мне прям очень понравилось как выглядит MacOS. Metal 4 тоже интересная заявка. Ждем 3-4 public beta


🥽 VisionOS 26
- Добавили Widgets
- Улучшили 3D фото
- Теперь можно смотреть фильмы в одном пространстве в двух очках
- Добавили поддержку аксессуаров, например ps controllers и logitech pen
- Окружение Юпитера - его можно покрутить, посмотреть 😃

iPadOS
- Новый дизайн (как в iOS 😏)
- Мультизадачность, сделали систему окошек как в macOS

#WWDC #WWDC2025
  • ❤ 4
  • ❤‍🔥 3
  • 👍 3
Post #101 562
Русский язык в Apple Intelligence не завезли, хотя завезли еще несколько языков #WWDC
  • 👍 2
Post #100 656
🍏 Сегодня в 20:00 по МСК - старт WWDC.
Будет большая презентация Apple.

Ждём новую iOS, новые SDK, апдейты для Xcode и, возможно, что-то новое по AI.
По идее, сразу после презентации выкатят beta версию iOS 19 (26).

Пока не решил — ставить ли её сразу или подождать. Обычно первые беты бывают весёлыми 🐛.
  • ❤ 7
  • 🔥 1
Post #99 1.04K
🧪 UI-тесты без боли — SwiftLens

Все мы знаем, какие XCUITest бывают:
медленные, флакающие, симуляторы жрут всё.
⠀
Автор SwiftLens придумал, как тестировать SwiftUI,
как будто это unit-тест. И это 🔥

Что даёт SwiftLens:
✅ Видит иерархию SwiftUI через PreferenceKey
⚡️ Тесты за 0.06 сек (vs 15 сек в XCUITest)
🧼 Меньше кода — .lensTrack(id:) и поехали
🔁 Работает с async: ждёт views, проверяет текст, нажимает кнопки

Пример — было и стало:

❌ XCUITest:

app.buttons["saveButton"].tap()
XCTAssert(app.staticTexts["successToast"].exists)


✅ SwiftLens:

try await interactor.tap("saveButton")
try await observer.waitForVisible("successToast")



Где особенно полезно:
🚀 На CI — быстро и стабильно
🛠 В pet-проектах — когда важен фидбек
📱 В любом SwiftUI-приложении — без боли

Минусы :
⚠️ Нужно вставлять .lensTrack, .lensSheet
⚠️ PreferenceKey не работает из .sheet — нужен обход
⚠️ Только SwiftUI
⚠️ Авторский проект, не стандарт Apple — но уже юзабельный

Хочешь попробовать?
1️⃣ Добавь .lensTrack(id: "myView")
2️⃣ Подключи LensObserver и LensInteractor
3️⃣ Запусти — и кайфуй от скорости

🎥 Видео
💾 GitHub
  • 👍 8
  • 🔥 4
Post #98 739
🚨 Xcode 16.4 RC — багфиксы и ожидание Xcode 17
Apple выкатили Release Candidate Xcode 16.4. Нового почти нет — всё внимание явно на Xcode 17 и WWDC.

Что появилось или поправили:
– Swift 6.1.2 (багфиксы и оптимизации)
– Строки из SwiftUI Preview больше не попадают в локализации
– Исправлены падения при раскрытии макросов
– При сборке fat static libs теперь используется lipo, а не libtool — меньше проблем с размером
– Обновлены SDK: iOS 18.5, macOS 15.5 и др.

⚠️ Что ещё не пофиксили:
– Симуляторы могут грузить CPU через diskimagesiod
– Отладка по Wi-Fi может не видеть включённый Developer Mode

📦 Требуется macOS 15.3+
🛠 Версия: Xcode 16.4 RC (16F6)

Ждём настоящих новинок в Xcode 17 — уже скоро!
  • ❤ 6
  • 🔥 3
Post #97 717
Как я попробовал GitHub Copilot в Xcode — и почувствовал себя тимлидом для джуна

Скачал Copilot for Xcode — отдельное бесплатное приложение от GitHub. Вроде штука простая: ставишь, даёшь доступ к проекту — и у тебя внутри Xcode появляется AI-агент, который предлагает подсказки, сам правит код и даже может создавать новые файлы.

Попробовал на живом проекте — ScreenCat (у меня котик бегает по экрану и реагирует на действия). Попросил Copilot сделать надпись с мыслями кота — в виде баббла с emoji. Сначала он выдал что-то странное, но… сам понял и тут же переписал на адекватный вариант. Это было приятно.

Плюсы:
👉 Крутые suggestions, местами реально сэкономили время
👉 Умеет запускать код, искать ошибки, создавать файлы

Минусы:
👉 Иногда мешает обычному автокомплиту Xcode (особенно когда жмёшь tab — и он перехватывает)
👉 Пока что как “агент” работает ограниченно — скорее умный помощник, чем полноценный напарник

Мой вывод:
Я пользуюсь Copilot всего пару дней, но уже приятно. Как друг сказал — чувствуешь себя лидом, который ставит задачи джунам. Только джун никогда не устает и не задаёт лишних вопросов.

Советую попробовать. Особенно если вы хотите чуть-чуть автоматизировать рутину.

Скачать Copilot for Xcode
  • 👍 9
  • 🔥 7
  • 🥰 2
Post #96 1.04K
🧠 iOS 19 и Apple Intelligence: самый масштабный апдейт за последние годы?

Apple уже анонсировала дату WWDC — 9 июня. И судя по сливам, нас ждёт не просто iOS 19, а полный редизайн и первый шаг в сторону полноценного локального AI.

Что известно:
👉 Редизайн в стиле visionOS: стеклянные элементы, «плавающие» меню, округлые иконки, новая навигация снизу.
👉 Apple Intelligence (AI-платформа) — так в Apple называют свои on-device нейросети:
 - генерация текста, смарт-ответов
 - резюме уведомлений
 - Genmoji — генерация эмодзи на лету 😊
 - создание изображений на основе промптов

Для разработчиков:
Apple готовит новый SDK для доступа к своим AI-моделям, прямо с устройства. Без облака.
Открываются возможности встраивать:
 - генерацию изображений
 - умные ответы
 - обработку текста и UI-помощников
Это не «Siri 2.0», а скорее базис для умных приложений внутри экосистемы Apple.


Источники:
Gurman (Bloomberg)
MacRumors

Ждём 9 июня. Будет ли это революция — узнаем совсем скоро.
  • 🔥 10
  • ❤‍🔥 3
Post #95 776
👨‍💻 Как я допиливал LLM.swift под своего экранного кота

В прошлом посте я упоминал, что использую LLM.swift - библиотеку для запуска локальных LLM-моделей на macOS. Концепция крутая, но реализация - сырая. Чтобы ScreenCat стабильно работал, пришлось серьёзно допиливать.

Вот, что именно улучшил:

🔸 1. Чистка контекста между запросами

Без clearContext() модель сохраняла "память" о предыдущих сообщениях. В итоге кот мог отвечать на то, чего не было.
Решается так:

bot.stop()
bot.clearContext()
await bot.respond(to: text)



🔸 2. Очередь запросов и работа в фоне

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

let waitFor = tail

let next = Task(priority: .utility) {
if let prev = waitFor {
_ = try await prev.value
}
return try await self.run(text, systemPrompt: systemPrompt)
}

tail = next
return try await next.value



🔸 3. Кастомизация производительности (`n_gpu_layers`, `nThreads`, `nBatch`)

В оригинальной библиотеке LLM.swift всё это было захардкожено.
Я добавил ручной контроль - чтобы под слабое и мощное железо выставлялись оптимальные настройки.

Пример:
let threads = ProcessInfo.processInfo.processorCount / 2

let bot = LLM(
from: modelUrl,
template: template,
topK: 40,
topP: 0.92,
temp: 0.6,
historyLimit: 0,
maxTokenCount: 1024,
nThreads: threads,
nThreadsBatch: threads,
nBatch: 8,
n_gpu_layers: suggestedGPULayers()
)!


И функция:

static func suggestedGPULayers() -> Int32 {
let gb = ProcessInfo.processInfo.physicalMemory / (1024 * 1024 * 1024)

if gb <= 8 { return 0 }
if isHighEndAppleSilicon() { return 20 }
if gb >= 16 { return 10 }
return 0
}



🔸 4. Фикс bot.stop()

В оригинале bot.stop() не работал как надо — генерация продолжалась.
Я пофиксил это: теперь метод реально прерывает вывод, как только нужно (например, по <|eot_id|> или внешнему событию).


🧠 Если кому нужно — могу сделать Pull Request в LLM.swift с этими доработками.
А если интересно попробовать готовый движок из ScreenCat — тоже пишите, соберу демку 🧩
  • 🔥 5
  • ❤ 3
Post #94 657
🧠 Как я выбирал LLM для экранного кота

Когда начал прикручивать локальную LLM к ScreenCat, первым кандидатом была Llama 3.1 8B. Мощная, умная, красивая на бенчмарках… но на MacBook Air с M2 — это ядерный реактор. Интерфейс лагает, фон моргает, котик тормозит. Не вариант.

🔁 Начал перебирать:

- Llama 3.2 1B - лёгкая, запускается быстро, но ответы… странные. То галлюцинирует, то резко переходит на английский, то просто зависает.
- Llama 3.2 3B (Q6\_K) - пока победитель. Более стабильна, держится в русле промта, не путает роли.
- Gemini 1.5 Flash - шикарно говорит по-русски, почти как ChatGPT, но тяжелющая. На Air дико тормозит. Зато на M3 Max - отлично.

💬 Примеры диалогов:

Ты: Привет, котик! Как настроение?
Кот 1B: Meow. Weather is 23C. Я… летаю… мечтаю… 🤖🐱
🤦‍♂️ Русский, английский, полёт во сне и наяву.

Кот 3B: Мрр, всё отлично! Я только что наблюдал за курсором — он такой смешной 😺
✅ Вот это уже похоже на экранного котика.

📦 Использую библиотеку LLM.swift - прикольная, но довольно сырая.
Пришлось допиливать: фиксить логику, добавлять поддержку стоп-токенов, чистку контекста, многопоточность.
Про то, что именно переделал - расскажу отдельно в следующем посте 👨‍💻

🧩 Сейчас в проекте используется кастомный движок с кастомными промтами и автостопами. Вот пример модели:

static var llama3_2_3B = Model(
quantization: .Q6_K,
repoName: "MaziyarPanahi",
modelName: "Llama-3.2-3B-Instruct-GGUF",
fileName: "Llama-3.2-3B-Instruct.Q6_K.gguf"
)


Плюс добавил определение железа, чтобы автоматически выбирать модель:
если MacBook Air - 1B, если MacBook Pro с M3 - 3B или даже Gemini. Ну и настройки использования ядер CPU и GPU тоже зависят от железа.

А вы что используете на слабом железе?
  • 👍 9
  • ❤ 5
Post #93 631
Prefire iOS 🎉 Розыгрыш билета на AppsConf 2025! Хочешь попасть на топовую оффлайн-конференцию для iOS- и Android-разработчиков? Мы дарим 1 билет на AppsConf 2025, которая пройдёт 4 июня в Москве! Что будет: – Сотни мобайл-разработчиков, живое общение и атмосфера большого…
🎉 Результаты розыгрыша:

🏆 Победитель:
1. Katerina (@Kate_Grish)

✔️Проверить результаты
  • 🔥 8
  • 🤡 2
Post #92 783
🍏 Виджеты в iOS умеют анимации. Но не должны.

Нашёл офигенное видео:
Apple’s Widget Backdoor

Что внутри:
👉 clockHandRotationEffect — приватное API из старых SDK. Позволяет анимировать стрелки в SwiftUI. Да, даже в виджете.

Image(systemName: "clock")
.clockHandRotationEffect(.hours, angle: .degrees(90))


В Xcode 14 это уже выпилили, но можно собрать в Xcode 13 и притянуть как статическую либу.

👉 BlinkingView — вот это настоящая черная магия.
Используется кастомный bitmap-шрифт, где каждый символ — это PNG-кадр.
Виджет показывает Text("A"), потом Text("B"), потом Text("C")…
Каждая буква = кадр анимации. Получается плавная картинка без приватного API, и всё официально.

👉 WidgetAnimation — репозиторий с примером анимированного виджета.
Создаёт 30-секундную зацикленную анимацию в iOS-виджете, используя только публичные API.
Пример работает на 8 FPS, но можно достичь до 30 FPS, используя ту же технику.


Если любишь ломать iOS аккуратно и красиво — must-watch.
App Review пока спит. Но ты не спи.

И вот исходники:
github.com/brycebostwick/WidgetAnimation
  • 😱 11
  • ❤ 4
  • 🤝 3
Post #90 963
🚀 Мой путь в мобильной разработке и Open Source

Я поделился на Хабре своей историей о том, как пришёл в мобильную разработку и какие уроки извлёк из участия в Open Source. От первых шагов с хакинтошем до руководства командой в Okko, от создания собственных библиотек до осознания важности оформления проектов и взаимодействия с сообществом.

📖 Читайте полную статью на Хабре: https://habr.com/ru/companies/oleg-bunin/articles/906952/
  • 👍 14
  • 🔥 10
  • ❤ 6
Post #89 801
🎉 Розыгрыш билета на AppsConf 2025!

Хочешь попасть на топовую оффлайн-конференцию для iOS- и Android-разработчиков?
Мы дарим 1 билет на AppsConf 2025, которая пройдёт 4 июня в Москве!

Что будет:
– Сотни мобайл-разработчиков, живое общение и атмосфера большого ивента.
– Я тоже буду на конференции — и веду сразу два круглых стола:
• по AI в разработке
• по плюсам и минусам Open Source

Как участвовать:
1. Подпишись на этот канал.
2. Нажми кнопку «Участвовать» под этим постом.

И всё. Удача может быть на твоей стороне!

🗓 Итоги — 13 мая в 12:00 по МСК. Победителя выберем случайно среди подписчиков.
  • 🔥 9
Post #88 663
🎞 Как я сделал анимации пиксельного кота на macOS (SpriteKit + свой движок)

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

🧠 Идея
Каждое настроение кота (сон, бодрствование, наблюдение) — это набор анимационных эффектов, каждый из которых независим и легко настраивается.

🎛 Система сделана так, чтобы было просто управлять поведением и позой.
 case .walking: // Анимации для состояния ходьбы
addEffect(BlinkEffect()) // Моргание глаз
addEffect(EyeWanderEffect()) // Наблюдение за рандомной точкой
addEffect(BreatheEffect()) // Дыхание
addEffect(TailWagEffect()) // Движение хвостом


🧩 Как устроен движок
Каждый эффект реализует простой протокол:

protocol CatAnimationEffect {
func apply(to view: CatLayeredView)
func remove(from view: CatLayeredView)
}


Аниматор подключает нужные эффекты в зависимости от "настроения" кота:

animator.setPose(.sleeping)
// → добавит BreatheEffect, HideEyesEffect, LyingEffect


🎬 Эффекты могут быть какими угодно. Вот, например, как двигается хвост:

final class TailWagEffect: CatAnimationEffect {
func apply(to view: CatLayeredView) {
let wag = SKAction.sequence([
.rotate(byAngle: 0.2, duration: 1.3),
.rotate(byAngle: -0.4, duration: 1.3),
.rotate(byAngle: 0.2, duration: 1.3)
])
view.tail.run(.repeatForever(wag), withKey: "tail_wag")
}

func remove(from view: CatLayeredView) {
view.tail.removeAction(forKey: "tail_wag")
}
}
  • 🔥 13
  • ❤ 3
Post #86 733
🎨 Как я рисовал пиксельного кота для своего macOS-приложения

Все майские праздники я провёл за одним — рисовал кота. Хотелось, чтобы у него был характер, настроение, и немного магии 🪄

🐾 Что было сложно
Нарисовать — ещё полдела. Главное — потом правильно разбить его на части:
– хвост должен анимироваться отдельно
– зрачки двигаться в сторону курсора
– и даже поза во сне — отдельный спрайт

🛠 Как я оживил его
Перенёс всё в приложение с помощью своего простого движка анимаций на SpriteKit. Там всё кадрами — как в классике.
Пример кода тоже покажу — вдруг кому-то пригодится!

👇 Вот часть кода с загрузкой спрайтов.
final class CatLayeredView: SKScene {
let body = SKSpriteNode(imageNamed: CatMind.shared.currentSkin.imageName + "_body")
let head = SKSpriteNode(imageNamed: CatMind.shared.currentSkin.imageName + "_head")
let tail = SKSpriteNode(imageNamed: CatMind.shared.currentSkin.imageName + "_tail")
let eyes = EyesNode()

static var defaultScale: CGFloat {
CatConfig.size.width / 1024 * 10
}

private var animator: CatLayeredAnimator!

override func didMove(to view: SKView) {
super.didMove(to: view)
backgroundColor = .clear
anchorPoint = CGPoint(x: 0.5, y: 0.5)

setupLayers()
animator = CatLayeredAnimator(view: self)
animator.setPose(.init())
}

func setPose(_ pose: CatViewAppearance) {
animator.setPose(pose)
}

Дальше расскажу как анимировал кота с помощью небольшого собственного движка 💪

#screencat #spritekit
  • ❤ 9
  • 🔥 7
  • 👾 2
Post #81 869
🗂 Навигация

#blog - Размышления, впечатления, обзоры, новости
#tools - О фреймворках, приложениях и прочих тулзах
#ai - Все об ai в Apple разработке (LLM, MLC, Ollama, LLM.swift и тд)
#prefire - О Prefire библиотеке.
#screencat — dev‑серия о виртуальном коте для macOS

⭐️ Топ‑3 поста (обновляю раз в месяц)

🎯 Какой iOS‑фреймворк станет номером один? — 3 942 просм.
❄️ Создаем зимнее настроение на SwiftUI — 1 518 просм.
🗂 Делаем Notion из Obsidian — 1 437 просм.
Telegram Prefire iOS 🎯 Какой iOS-фреймворк станет номером один? Примите участие в голосовании, чтобы вместе создать ТОП iOS-фреймворков 2024 по версии разработчиков! 📋 Что в опросе? - Выберите фреймворки, которые вы используете каждый день. - Добавьте свои любимые инструменты…
  • ❤ 8
  • 🔥 1
Post #79 924
📌 TL;DR

👋 Привет, ты в Prefire iOS - блоге о живой iOS (и не только) разработке.


⚡️ Архитектура, DI и модульность без святых войн
🛠 CI / CD, кэширование билдов, инструменты перфоманса
🎨 SwiftUI‑сниппеты, анимации и UI‑фишки
🤖 Локальные LLM и AI‑эксперименты в продакшен‑коде
🎙 Опросы + дискуссии по свежему WWDC и релизам Xcode

👉 Добро пожаловать!
  • ❤ 10
  • 🔥 1
  • 🤯 1
  • 🤡 1
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 →