#swift #memory
Как устроен счетчик ссылок в Swift (20 мин)
🗣 После прочтения этой статьи вы на любой вопрос со звездочкой ответите на собеседовании про память в Swift
📍 Типы ссылок в ARC
📍 Счетчики ссылок, и где они хранятся
📍 Как работает Side Table
📍 Жизненный цикл объекта
Расскажите, о чем вы узнали впервые из статьи
Как устроен счетчик ссылок в Swift (20 мин)
🗣 После прочтения этой статьи вы на любой вопрос со звездочкой ответите на собеседовании про память в Swift
📍 Типы ссылок в ARC
📍 Счетчики ссылок, и где они хранятся
📍 Как работает Side Table
📍 Жизненный цикл объекта
Расскажите, о чем вы узнали впервые из статьи
🔥11👎1
Поиск retain cycle с помощью инструментов Xcode
Небольшой гайд о том, как пользоваться Debug Memory Graph
#memory
Небольшой гайд о том, как пользоваться Debug Memory Graph
#memory
👍3👎1
Retain Cycle in Swift (6 мин)
Еще раз про Retain Cycle, ARC, виды ссылок (strong, weak, unowned) с примерами как на картинке 😄
#memory
Еще раз про Retain Cycle, ARC, виды ссылок (strong, weak, unowned) с примерами как на картинке 😄
#memory
👍5👎1
Quickly find retain cycles in your app with this one trick
Retain cycle - ситуация, когда объект не может быть удален из памяти из-за цикла сильных ссылок.
Автор предлагает лайфхак, как его обнаружить.
Создаем symbolic breakpoint как на скрине. Он будет срабатывать при деаллокации UIViewController и издавать звук. Теперь при навигации в приложении обращайте внимание на отсутствие звука при закрытии экрана. В такой ситуации скорее всего UIViewController остается в памяти.
Как вам такой оригинальный способ дебага по звуку? 😁
#memory
Retain cycle - ситуация, когда объект не может быть удален из памяти из-за цикла сильных ссылок.
Автор предлагает лайфхак, как его обнаружить.
Создаем symbolic breakpoint как на скрине. Он будет срабатывать при деаллокации UIViewController и издавать звук. Теперь при навигации в приложении обращайте внимание на отсутствие звука при закрытии экрана. В такой ситуации скорее всего UIViewController остается в памяти.
Как вам такой оригинальный способ дебага по звуку? 😁
#memory
👍22🥰4👎2🤯1
A Better Way To Test Reference Cycles in iOS
Как реализовать тестирование на цикл сильных ссылок:
1️⃣ В тестовом классе добавляем
2️⃣ Определяем вспомогательный метод, который инициализирует тестируемый объект и присваивает
3️⃣ В методе
4️⃣ В методах с тестами инициализируем тестируемый объект с помощью метода из 2 шага
Если обнаруживается цикл сильных ссылок, то в методе tearDown будет ошибка
#testing #memory
Как реализовать тестирование на цикл сильных ссылок:
1️⃣ В тестовом классе добавляем
weak var weakSUT
на тестируемый объект2️⃣ Определяем вспомогательный метод, который инициализирует тестируемый объект и присваивает
weakSUT
его значение 3️⃣ В методе
tearDown
добавляем проверку, что weakSUT
имеет значение nil4️⃣ В методах с тестами инициализируем тестируемый объект с помощью метода из 2 шага
Если обнаруживается цикл сильных ссылок, то в методе tearDown будет ошибка
#testing #memory
👍5👎1
Storing Payment Data On iOS: My Take
Как хранить чувствительные данные на iOS:
👉 Не храните их без крайней необходимости 👩✈️
👉 Keychain - зашифрованный контейнер для хранения данных, таких как пароли и криптографические ключи. Это безопасно, но обычно используется только для небольших фрагментов данных
👉 Шифрование. Чтобы добавить дополнительный уровень безопасности, вы также можете зашифровать небольшие фрагменты данных перед их сохранением в Keychain. Можно использовать алгоритм симметричного шифрования, такой как AES, с уникальным ключом для каждого пользователя.
👉 Файлы. Вы можете использовать шифрование для файлов в secure enclave iOS, используя безопасные API данных
#memory #security
Как хранить чувствительные данные на iOS:
👉 Не храните их без крайней необходимости 👩✈️
👉 Keychain - зашифрованный контейнер для хранения данных, таких как пароли и криптографические ключи. Это безопасно, но обычно используется только для небольших фрагментов данных
👉 Шифрование. Чтобы добавить дополнительный уровень безопасности, вы также можете зашифровать небольшие фрагменты данных перед их сохранением в Keychain. Можно использовать алгоритм симметричного шифрования, такой как AES, с уникальным ключом для каждого пользователя.
👉 Файлы. Вы можете использовать шифрование для файлов в secure enclave iOS, используя безопасные API данных
#memory #security
👍4👎1
Как не потерять голову (и память) при поиске утечек в iOS (6 мин)
Способы обнаружения утечек из статьи:
👉 С помощью Xcode Memory Graph
👉 С помощью Instruments. После запуска приложения вы можете увидеть в реальном времени, сколько ресурсов потребляется в строке Allocations, и были ли обнаружены какие-либо утечки памяти в строке Leaks
👉 С помощью инструмента «Анализ» (только для Objective-C)
👉 С помощью unit-тестов
👉 С помощью Symbolic breakpoint. Вы можете создать точку останова, чтобы отследить вызовы метода dealloc, и проверить, был ли освобожден контроллер из памяти
#memory
Способы обнаружения утечек из статьи:
👉 С помощью Xcode Memory Graph
👉 С помощью Instruments. После запуска приложения вы можете увидеть в реальном времени, сколько ресурсов потребляется в строке Allocations, и были ли обнаружены какие-либо утечки памяти в строке Leaks
👉 С помощью инструмента «Анализ» (только для Objective-C)
👉 С помощью unit-тестов
👉 С помощью Symbolic breakpoint. Вы можете создать точку останова, чтобы отследить вызовы метода dealloc, и проверить, был ли освобожден контроллер из памяти
#memory
👍2👎1