TGViewer
iOS Dev iOS Dev @iosdev · 7.92K subscribers
Post #555 2.93K
Что означает EXC_BAD_ACCESS?

Вероятнее всего, однажды вы столкнетесь (а скорее всего, уже сталкивались) с крашем, вызванным EXC_BAD_ACCESS. Так что же это на самом деле?

Всякий раз, когда вы встречаете EXC_BAD_ACCESS, это означает, что вы отправляете сообщение объекту, который уже был освобожден. Это самый распространенный сценарий, но есть и другие.

🧑‍💻Техническое объяснение сложнее

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

Когда вы отправляете сообщение объекту, указатель, который указывает на объект, которому вы отправляете сообщение, должен быть разыменован (dereferenced). Это означает, что вы берете адрес памяти, на который указывает указатель, и получаете доступ к значению этого блока памяти.

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

Когда это происходит, ядро ​​отправляет исключение (EXC), указывающее, что ваше приложение не может получить доступ к этому блоку памяти (тот самый BAD_ACCESS).

Таким образом, когда вы сталкиваетесь с EXC_BAD_ACCESS, это означает, что вы пытаетесь отправить сообщение в блок памяти, который не может выполнить это сообщение.

Однако в некоторых случаях EXC_BAD_ACCESS вызван поврежденным указателем. Всякий раз, когда ваше приложение пытается разыменовать поврежденный указатель, ядро ​​выдаёт исключение.

Основные причины для EXC_BAD_ACCESS

⚪ Использование памяти, которая была освобождена.

⚪ Попытка записи за конец массива или буфера другого типа.

⚪ Использование указателя, который не был инициализирован.

Что почитать на эту тему?

1️⃣ Debugging EXC_BAD_ACCESS

2️⃣ EXC_BAD_ACCESS crash error: Understanding and solving it

@iOS Dev — о том, что мы иногда можем встретить
  • 👍 35
  • 🔥 4
  • ❤‍🔥 1
  • ⚡ 1
  • 👏 1
  • 🤯 1
More from @iosdev
  1. Oct 9, 2026Эффект премиальной банковской карты с помощью SwiftUI и Metal Такая красота часто встречае…
  2. Oct 9, 2026Итеративная загрузка данных в Swift Хотя одновременное выполнение десятков асинхронных зап…
  3. Oct 8, 2026Мультиагентность: следующий шаг в разработке или лишняя сложность? AI-агенты уже умеют пис…
  4. Oct 8, 2026Продвинутые техники работы с макросами в Swift Владение макросами позволяет автоматизирова…
  5. Oct 7, 2026Работа с модальными экранами на iPhone Duo На iPhone Duo всплывающие окна могут выглядеть…
  6. Oct 6, 2026⚡️ Apple обязали всех делать поддержку iPhone Duo с апреля 2027 года Сегодня выкатили обно…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →