iOS Dev
7.89K subscribers
1.2K photos
149 videos
1 file
1.48K links
👨‍💻Автор: Виктор Грушевский (@Viktorianec)

⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru

🍏Канал об iOS-разработке, алгоритмах и архитектурах

⭐️ Подготовка к собесам

⭐️ Код. Много кода.

#ios #mobile #swift
Download Telegram
🫨 Проблемы с AppStore в РФ

По данным хабра магазин приложений AppStore начал нестабильно работать в России. У части пользователей сервисы AppStore не работают вовсе (без специальных сетевых средств).

Похоже, что проблемы с прошлой недели продолжаются.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
😢28👍12😨9🤯3🕊3👾3🔥2🤩2😍1😡1
Please open Telegram to view this post
VIEW IN TELEGRAM
👾114🕊31
Скинули график сна iOS-разработчика на фоне последних новостей

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
3😁58🤣21💯7🔥2
Зарплаты IT-специалистов в первой половине 2026: Objective-C всё еще самый доходный

Уровень компенсации для топовых разрабов, знающих Objective-C не только возглавляет таблицу, но ещё и лидер по темпу, +13%.

💰 Доход разработчиков на Objective-C: 400 000 рублей.


Ощутимо зарплаты выросли и в Swift (на 7% до 326 000 ₽), котлин тоже прибавил на 5% до 320 000 ₽.

К слову, Авито больше не номер один среди компаний, перехватил эстафетную палочку Райффайзен Банк (+9%, 400 000 - медиана).

В целом, ситуация на рынке такая, что медианная зарплата на IT-рынке сейчас — 191 000.

📖 Остальная аналитика доступна на хабре.

Прошлые обзоры - вот тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
519🏆8😱5🤯3👍2👾1
🫨 ИИ-модели от OpenAI вышли из-под контроля и устроили хакерскую атаку

Недавно компании OpenAI и Hugging Face (возможно, главный хаб для моделей, его я юзал например, вот тут) столкнулись с беспрецедентным инцидентом кибербезопасности, вызванным автономными действиями ИИ-агентов во время внутреннего тестирования.

Стремясь любой ценой решить поставленную задачу, модели смогли вырваться из песочницы и получить доступ к hugging face.

ИИ самостоятельно обнаружил и проэксплуатировал уязвимость нулевого дня во внутреннем прокси-сервере и использовал украденные учетки.

Службы безопасности Hugging Face сумели оперативно обнаружить аномальную активность и пресечь её после инцидента. OpenAI выпустили пресс-релиз со всеми подробностями.

Берегите свои креды с молоду, как говорится.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤯19😈6😨5🤓2👍1😢11
Мир прототипов

Я пилю приложения уже больше 15 лет и за это время увидел рассвет и закат многих проектов: от первых мессенджеров ВК до яндекс.музыки (последнее обновление никуда не годится) и крупных игровых тайтлов, да и вообще, если мы входим в эпоху, когда игры на плойке будут только в цифре - это уже не звоночек, это чёртов колокол.

Последние пару-тройку лет постоянно слышу: я сделал аналог ноушена, я запустил агрегатор новостей за день, я выпустил собственный браузер.

Ага, конечно.

Оказывается, что там надо немного допилить (процентов 90), скачиваний у ребят миллионы (1-2 в неделю), а графики так и вовсе нарисованы какой-нибудь нейросеткой.

Ну с графиками хотя бы будет повеселее: вы же в курсе, что крупные ии-игроки добавляют паттерны в свои изображения, по которым можно отличить ии-слоп? Если нет, теперь в курсе.

Я к тому, что всё что изменилось - только количество: если раньше плохих приложений было 10, то теперь их будет 1 000 000, но качество не улучшилось ни на йоту.

Лагающего, неповоротливого, одинакового стало ожидаемо намного больше.

Много ума не надо - отдать диз чего угодно клоду/кодексу (нужное подчеркнуть) и на выходе получить прототип.

А потом неделями, месяцами, годами допиливать до хотя бы какого-нибудь приемлемого уровня.

Это разве прорыв?

Даже телега в последнее время не радует. Что уж говорить об остальных.

Если кто-то смотрел ЧМ, то заметили что нейрослоп заполонил и рекламу. Так и представляю, как ушлые маркетологи говорят: ну мы сделаем почти похоже на настоящую, только дешевле, будет почти также. Нет, не почти - это беспросветный, вымученный, чудовищный, вырвиглазный со слабой аурой стиль, за реализацию которой наверняка кто-то получит премию.

Когда с таким количеством ресурсов пользователям отдают это - становится по-настоящему страшно за индустрию.

Страшно, что мы уже живём в мире прототипов.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
9❤‍🔥57💯21🔥12😢116🍓1🆒1
Пересмотр модульной архитектуры iOS-приложения компании JET в 2026 году

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

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

Как следствие, в JET ввели пять категорий. Три из них относятся к собственным компонентам (App, Feature, Foundation); две - к сторонним зависимостям (SDK, Utility).

📖 Про то, что у них получилось, и как работает всё вместе - можно почитать в техническом блоге.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
5135🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
В Яндексе бьют людей?

Добрался до разбора доклада про внедрение AI, в котором руководитель мобильной разработки заявляет на весь зал, что у них бьют людей (не буквально, это важно) за то, что при использовании ИИ-агентов они отдают вопросы при комментах в пулл-реквестах для LLM.

Ну, даже не знаю как это комментировать.

В целом, все прогнозы сбываются. Вроде и продвигают ИИ в массы, а вроде и с оговорками.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
😁35🤣15👍6😱63🔥1👏1🤯1
Пасхалки в крашлогах Apple с помощью hexspeak

Помните, когда-то на калькуляторах можно было писать всякие прикольные слова с помощью цифр?

Оказывается, есть специальный термин hexspeak, целая форма правописания с использованием шестнадцатеричных цифр.

Apple не остался в стороне и несколько кодов завершения также написаны в этом стиле:

0xdead10cc (dead lock) - приложение удерживает системный ресурс во время работы в фоновом режиме.

0x8badf00d (ate bad food) - watchdog убивает за слишком долгую блокировку основного потока при запуске или возобновлении.

0xc00010ff (cool off) - используется Apple в отчетах о крашах iOS, когда приложение было закрыто в ответ на термическое событие.

0xdeadfa11 (dead fall) - юзер принудительно закрыл зависшее приложение.

0xbad22222 (bad too repeatedly) - VoIP-приложуху крашнул iOS, поскольку оно возобновлялось слишком часто.

0xbaaaaaad (baaaaad) - лог представляет собой снимок состояния всей системы, не отчет о краше.

0xdeadfeed (dead feed) - краш из-за превышения таймаута при запуске службы.


Да и вообще, рекомендую посмотреть вики, там много любопытных отсылок, есть даже Ace of Base 🎵

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥5013❤‍🔥6👍3👏2🎉1😨1👾1
Создание адаптивных немодальных панелей в SwiftUI

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
318🔥86👍1👏1👾1
This media is not supported in your browser
VIEW IN TELEGRAM
Библиотека лоадеров для работы с Foundation Models

Когда-то я делился примерами красоты с помощью математики. Но если подрубить TimelineView, Canvas и немного воображения, сейчас можно создать намного более весёлые и интересные кейсы.

Например, скорее всего если вы отдаете юзерам инфу поэтапно (или генерите изображения), а ваши модельки крутятся долго, и как раз в этот момент совершенно точно что-то нужно показывать.

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

Вот, например, кит, который используется на гифке, которую вы видите:

enum LoaderKit {
static let goldenAngle = Double.pi * (3 - (5.0).squareRoot())

static func fibonacciSphere(_ count: Int) -> [LDVec3] {
guard count > 1 else { return [LDVec3(x: 0, y: 0, z: 0)] }
var pts: [LDVec3] = []
pts.reserveCapacity(count)
for i in 0..<count {
let y = 1 - (Double(i) / Double(count - 1)) * 2 // 1 … -1
let r = (1 - y * y).squareRoot()
let phi = Double(i) * goldenAngle
pts.append(LDVec3(x: cos(phi) * r, y: y, z: sin(phi) * r))
}
return pts
}

static func rotateY(_ p: LDVec3, _ a: Double) -> LDVec3 {
let c = cos(a), s = sin(a)
return LDVec3(x: p.x * c + p.z * s, y: p.y, z: -p.x * s + p.z * c)
}

static func rotateX(_ p: LDVec3, _ a: Double) -> LDVec3 {
let c = cos(a), s = sin(a)
return LDVec3(x: p.x, y: p.y * c - p.z * s, z: p.y * s + p.z * c)
}

static func rotateZ(_ p: LDVec3, _ a: Double) -> LDVec3 {
let c = cos(a), s = sin(a)
return LDVec3(x: p.x * c - p.y * s, y: p.x * s + p.y * c, z: p.z)
}

static func dot(_ x: CGFloat, _ y: CGFloat, _ r: CGFloat) -> Path {
Path(ellipseIn: CGRect(x: x - r, y: y - r, width: r * 2, height: r * 2))
}

static func hash(_ i: Int, _ salt: Double = 0) -> Double {
let v = sin(Double(i) * 12.9898 + salt * 78.233 + 0.5) * 43758.5453
return v - v.rounded(.down)
}

static func lerp(_ a: Double, _ b: Double, _ t: Double) -> Double { a + (b - a) * t }
static func smoothstep(_ t: Double) -> Double { let x = min(max(t, 0), 1); return x * x * (3 - 2 * x) }
static func easeOut(_ t: Double) -> Double { 1 - pow(1 - min(max(t, 0), 1), 3) }
}


А целиком примеры уже доступны: ⭐️ здесь или 💰 тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
6😍28🔥98👍2👏2👾1
Как в Apple переписывают проекты на Swift

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

Чтобы повысить отказоустойчивость формата на платформах Apple, инженеры приняли решение обновить проект с языка C на Swift.

Перед командой стояла амбициозная задача: обеспечить полную безопасность памяти, сохранить 100% попиксельную совместимость рендеринга и не допустить падения производительности.

Для проверки точности инженеры покрыли код тестами на 99,7% и прогнали 27 миллионов глифов из реальных PDF, сравнивая каждый битмап с эталоном.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1914🏆4👍1
On-demand resources будут задепрекейчены в iOS 27

📖 Ресурсы по запросу (on-demand) это контент, который размещался в App Store и находился отдельно от соответствующего бандла. Они позволяли уменьшить размер приложения, ускорить загрузку и расширить функциональность.

Вместе с ними под deprecated попал и NSBundleResourceRequest.

Теперь Apple рекомендует использовать только Background Assets.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
4😢177😨6😎3👏1🕊1
А помните, как появился клод и кодекс, и сразу стало миллион инновационных приложений, каждое запускается за 0.25 секунд, 120 фпс у каждого, сам апстор очистился, и программисты все такие светлые вокруг и все друг другу улыбаются.

Вот и я не помню.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
5😁112🤣18🔥7😢32👍1
Давно себе хотел пополнить коллекцию необычных девайсов и в этот раз добавил себе trmnl - e-ink экран на максималках.

Ребята когда-то на кикстартере собрали 150к вместо требуемых 5к, а потом ещё и выиграли хакатон с решением в виде отдельной читалки (можно чекнуть на гитхабе) для контента в телеге.

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

⭐️ А у вас есть аналоги? Хотите поделиться? Или может даже делаете сами?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥2510🤩3👍2💯2
Практическое руководство по совместимости Liquid Glass с UIKit

Осень приближается, а вместе с ней и новые требования к приложениям.

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
31673🙏1👻1
⚡️В России перестали работать «Яндекс», «Макс», сайты маркетплейсов и банков

Проблемы с сетевым соединением наблюдаются в сервисах маркетплейсов, разных IT-компаний и социальных платформ, а также операторов связи и банков.

📖 Новость на хабре.

[UPD] По данным сервиса мониторинга сейчас ситуация пришла в норму.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
😨22😢7🏆6🔥5🤩3😱2🕊2🤝1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩13👻66🔥2
Протоколы в Swift и main actor

📖 В статье рассматриваются особенности использования атрибута @MainActor.

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
71383😴1😨1
⚡️ Помните, я шутил про специальную пометку приложений в AppStore, если для них использовались нейронки?

Мы сегодня стали на шаг ближе к этому.

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

Кстати, вотермарку в тексте нельзя увидеть, но она есть.

Каждое предложение, которое Клод пишет для вас (а вернее, за вас), теперь несет в себе подпись, которую вы никогда не увидите.

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

Ждём отдельный апстор для ИИ-приложений?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
6😨2716😱10💯4👻4🔥2😎1
This media is not supported in your browser
VIEW IN TELEGRAM
Повторяем стопки карт как в Apple Wallet в 50 строк кода

На выхах залип на анимацию из Apple Wallet и решил попробовать воспроизвести с минимальным количеством кода.

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

Но тут есть подводный камень. Если мы будем анимировать всю стопку одинаково, то на выходе получим скучную, приклеенную однотипную анимашку, это не круто.

Поэтому можно разбавить свои кэфом пружины (просто каждую чуть медленее, чем предыдущую)🎩

ForEach(Array(colors.enumerated()), id: \.offset) { index, color in
RoundedRectangle(cornerRadius: 26, style: .continuous)
.fill(color.gradient)
.offset(y: CGFloat(index) * (peek + (openStep - peek) * progress))
.animation(.interactiveSpring(response: 0.30 + Double(index) * 0.035,
dampingFraction: 0.74),
value: progress)
}


А на 💰 На бусти и ⭐️ в телеграме уже доступен не только этот пример, но ещё и расширенный и целая тонна полезных фишек.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
825🔥14👍6👾1