IOSDEV Telegram 555
Что означает 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❤‍🔥11👏1🤯1



tgoop.com/iosdev/555
Create:
Last Update:

Что означает 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 — о том, что мы иногда можем встретить

BY iOS Dev


Share with your friend now:
tgoop.com/iosdev/555

View MORE
Open in Telegram


Telegram News

Date: |

Add up to 50 administrators ZDNET RECOMMENDS Other crimes that the SUCK Channel incited under Ng’s watch included using corrosive chemicals to make explosives and causing grievous bodily harm with intent. The court also found Ng responsible for calling on people to assist protesters who clashed violently with police at several universities in November 2019. Channel login must contain 5-32 characters Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value.
from us


Telegram iOS Dev
FROM American