- Каждый поток должен использовать отдельный NSManagedObjectContext.
- Контексты не являются потокобезопасными, и попытка использовать один и тот же контекст из разных потоков приведёт к сбоям.
- Для передачи объектов между контекстами нужно использовать NSManagedObjectID, а не сами объекты.
- При сохранении одного контекста необходимо либо вручную уведомлять другие контексты об изменениях, либо включить automaticallyMergesChangesFromParent.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3💊1
Anonymous Quiz
51%
Xcode Instruments
10%
Swift Profiler
32%
Memory Analyzer
6%
Performance Monitor
💊1
Anonymous Quiz
78%
Использование DispatchGroup
13%
Применение нескольких DispatchQueue.async
8%
Запуск последовательных DispatchQueue.sync
1%
Создание массива Future объектов
Вес массива зависит от количества элементов и их типа. Например, массив из 100 Int (по 8 байт каждый) займёт примерно 800 байт. Если массив содержит объекты, то он хранит ссылки, а сами объекты лежат в куче. Также учитывается внутренний буфер и выравнивание.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊2
Anonymous Quiz
43%
?
3%
!
52%
??
2%
&
Anonymous Quiz
55%
Использование паттерна State
23%
Применение инъекций зависимостей
10%
Модификация свойств объекта
12%
Создание наследников класса
1. Главный поток отвечает за обновление пользовательского интерфейса.
2. Его блокировка приводит к зависанию приложения и ухудшению пользовательского опыта.
3. Возможна ошибка "Application Not Responding" (ANR).
Как избежать:
1. Выполняйте ресурсоемкие задачи (сеть, вычисления) в фоновых потоках с использованием DispatchQueue, NSOperationQueue или Coroutines.
2. Используйте асинхронные операции с callback-ами, Promise, или реактивными библиотеками (RxSwift).
3. Минимизируйте время выполнения операций, требующих обновления UI, чтобы быстрее возвращаться в главный поток.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
65%
Когда существует круговая ссылка, но один из объектов будет жить всегда
12%
Для временных ссылок на экземпляры
20%
Когда оба объекта могут быть уничтожены одновременно
3%
Для создания сильных ссылок в замыканиях
Anonymous Quiz
17%
Использование sleep()
12%
Применение wait()
66%
Использование DispatchQueue.asyncAfter
6%
Применение NSTimer
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
5%
Использование плагинов
58%
Применение open классов и методов
28%
Создание API для регистрации пользовательских функций
9%
Использование скриптов на Swift
💊4
Anonymous Quiz
69%
try/catch
16%
Error handling внутри каждой операции
7%
Использование futures и promises
8%
Сбор ошибок в массив и их последующая обработка
Инструмент Instruments (особенно Leaks и Allocations) из Xcode позволяет отслеживать живые объекты и найти retain cycles. Также можно использовать Xcode Memory Graph Debugger (в процессе отладки).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
47%
Variadic Parameters
36%
Optional Parameters
9%
Default Parameters
7%
Named Parameters
Anonymous Quiz
43%
Использование рекурсивных функций с try/catch
21%
Применение стека транзакций с проверками состояния
24%
Использование defer для роллбэка в каждой транзакции
11%
Применение шаблона Command для управления транзакциями
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
34%
Использование filter
42%
Применение allSatisfy
18%
Использование contains
5%
Проверка каждого элемента в цикле
Anonymous Quiz
44%
Использование private
8%
Применение internal
45%
Декларирование метода как final
2%
Использование restricted
💊4
Регулярное выражение — это шаблон для поиска и обработки строк. Используется для валидации формата (email, номера), поиска подстрок, замены текста по шаблону и разбора сложных строк.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
41%
Использование DataMigrationManager
38%
Применение CoreData Versioning
14%
Использование UserDefaults для трекинга версий
7%
Применение Automatic Schema Evolution