Iniciar sesión Registro
Anuncios
Tu espacio publicitario
Reserva este slot exclusivo para el periodo elegido.
Comprar publicidad →
Logotipo de la comunidad de telegram - BW Swift
Añadido 06 ene. 2025

BW Swift

@bwswift
Número de suscriptores: 1 742
Fotos: 1,710
Videos: 176
Enlaces: 1,590
Descripción:
Канал створений для навчання програмування на swift та розробці програм під iOS. Мета проекту - допомогти студентам пройти шлях від розробника-початківця до оплачуваного фахівця. Тут я публікую актуальні та цікаві статті щодо iOS розробки. Адмін: @bws2007
Fuente

BW Swift | Хочу поділитися простим, але ефективним трюком зі Swift. Чи мали ви ко...

Logotipo de la comunidad de telegram - BW Swift BW Swift @bwswift
746 Vistas/Alcance 2025-08-04 16:14 Mensaje №1948
Хочу поділитися простим, але ефективним трюком зі Swift. Чи мали ви коли-небудь необхідність зафейкати дані в структурі, до параметрів якої ви не маєте доступ? Наприклад, якась публічна структура, але з приватним інітом в якомусь сторонньому пакеті. Ви можете створити фейкову структуру з ідентичною бітовою комбінацією та зкастувати її у потрібний тип! Все що потрібно: - знайти порядок і типи полів.- створити фейкову структуру з ними у правильній послідовності. - використати unsafeBitCast для трансформації нашого фейку у потрібний тип. let fake = (10, "World", true)let hacked = unsafeBitCast(fake, to: Original.self) Чи це безпечно? Ні. Чому це небезбечно: - структури в Swift не гарантують стабільний layout памʼяті. - наприклад, String не є типом з фіксованим розміром, і тому його представлення в памʼяті може відрізнятися від очікуваного. - цей трюк повністю обходить логіку типів в Swift та логіку, можливо закладену для оригінального типу, що може призвести до неочікуваних результатів. Це цікавий трюк з памʼяттю, але непридатний до проду, бо порушує типобезпечність. Практичне застосування таке: - Тестування структур з приватним ініціалізатором чи полями. - Реверс та дослідження приватних API (приклад на 2му скрині). P. S. На другому скрині приклад, як подібним способом можна фейкнути View в SwiftUI. Наприклад, вкинувши Bool в закриту проперті isSecure у TextField. Агресивно 😅------------------------------Я часто пишу і писав різні здебільшого технічні цікавинки на моєму Linkedin. Можеш підписатися, якщо було цікаво =)