Статті про iOS і Swift

Статті без українського перекладу відкриваються англійською й позначені EN. Дивитися усі статті англійською.

10 хв читання

Диспетчеризація у статичних і динамічних фреймворках (частина 2 з 3): фреймворки SPM та Xcode

Досліджуємо статичні й динамічні бібліотеки, зібрані за допомогою Swift Package Manager і Xcode. Простежуємо символи, залежності, місця виклику та fixups (коригування адрес) у справжніх бінарних файлах Mach-O.

Читати більше →

18 хв читання

Як я побудував конвеєр субтитрів для 106 серій за допомогою Whisper, Groq і Python

Як я побудував на Python конвеєр субтитрів, який використовує Whisper і Groq для транскрибування, за можливості бере готові субтитри та перемикається між п’ятьма сервісами перекладу, коли без перекладу не обійтися.

Читати більше →

9 хв читання

Чи справді Claude Haiku 4.5 мислить? Вимірюємо розширене мислення з термінала

У відповіді на мій коментар написали, що Haiku не має режиму мислення і саме тому працює швидше за Sonnet та Opus. Тож я пішов і виміряв це. Відтворюваний експеримент у терміналі, для якого не потрібен ключ API: кількість токенів мислення, множення з однозначно правильною відповіддю, причина, з якої мовна модель помиляється в арифметиці, доступній калькулятору за $2, і неприємний сюрприз із використанням інструментів – модель повідомила, що виконала команду bash, хоча їй не дозволяли цього робити.

Читати більше →

13 хв читання

Диспетчеризація у статичних і динамічних фреймворках (частина 1 із 3): що відбувається за лаштунками

Простежимо виклик Swift через символи Mach-O, заглушки компонувальника та імпортовані вказівники. На прикладі реальних бінарних файлів розмежуємо статичне компонування, класичне відкладене зв’язування та chained fixups.

Читати більше →

11 хв читання

Від збирання сміття до ARC: як розвивалося керування пам’яттю в Objective-C і чому ARC – не збирач сміття

Перш ніж ARC став стандартним механізмом, Apple експериментувала зі збиранням сміття в Objective-C на macOS. У цій статті я розгляну, чому від GC відмовилися, як ARC поєднує аналіз компілятора з підрахунком посилань під час виконання та як він спирається на ручний підрахунок посилань. На прикладах Swift, SIL і виводу компілятора я крок за кроком простежу вставлення викликів retain/release і спростую поширені міфи про ARC та збирання сміття.

Читати більше →

7 хв читання

Стирання типів у Swift: як спростити роботу з протоколами з асоційованими типами за допомогою any і some та власної реалізації

Розберімо стирання типів у Swift: як any, some і власні обгортки спрощують роботу з протоколами з асоційованими типами. Розглянемо переваги, недоліки й практичні поради, які допоможуть писати гнучкий, типобезпечний код, зручний у підтримці, та уникати поширених пасток.

Читати більше →

7 хв читання

Майже ручне керування ARC у Swift. Модифікатори володіння та гарантії часу життя

Цікавитеся моделлю володіння пам’яттю у Swift? Дізнайтеся, як borrowing і consuming дають змогу керувати позичанням і передаванням значень. Навіть без експериментальних прапорців у Swift уже є такі інструменти, як withExtendedLifetime, щоб зберігати об’єкти живими під час важливих операцій. У цій статті я розберу приклади, поясню, коли й навіщо потрібні ці можливості, і дам посилання на Swift-пакет, який можна завантажити й дослідити в інтерактивному playground.

Читати більше →

11 хв читання

Як без зайвих труднощів використовувати Swift Package Manager (SPM) і CocoaPods (POD) разом для одного SDK

Swift Package Manager 🆚 CocoaPods: не можете визначитися? Навіщо обирати щось одне, якщо можна використовувати ОБИДВА? 🤔 Розповім, як без зайвого клопоту тестувати й використовувати SPM і CocoaPods разом для одного SDK. ☕️

Читати більше →

4 хв читання

Складнощі логіки повторних спроб і резервних механізмів у розробці застосунків

Представляю DMAction – потужну бібліотеку Swift, яка спрощує повторні спроби, резервні дії та роботу з діями у застосунках. Коли ви працюєте з мережевими запитами, фоновими завданнями чи взаємодіями з користувачем, DMAction надає зрозумілий API на основі протоколів для коректної обробки збоїв. Вбудовані механізми повторних спроб і підтримка резервних дій позбавляють повторюваного коду, у якому легко припуститися помилки, тож ви можете зосередитися на надійній реалізації функцій. Бібліотека легко інтегрується з UIKit і SwiftUI та дає змогу гнучко компонувати дії. DMAction має відкритий код, розвивається за участі спільноти й легко додається до проєкту. Це ваш основний інструмент для розробки стійких до збоїв застосунків. Спробуйте його вже сьогодні!

Читати більше →