Понимание слабой и непризнанной ссылки в Swift под капотом
Я хочу полностью понять, что происходит внутри слабой и неподтвержденной референции в Swift. Для этого я прочитал MikeAsh и получил несколько вопросов.
Что уже известно:
- когда нет слабой (и, я полагаю, не принадлежащей) ссылки на объект, счетчик сильной ссылки сохраняется непосредственно в области памяти объекта
- когда появляется слабая ссылка, второе слово в памяти объекта используется повторно для ссылки на таблицу сторон
- Приставной столик имеет ссылку на объект
- слабая ссылка относится к этой таблице
И что я хочу уточнить:
- Какие еще таблицы хранятся внутри, кроме ссылки на объект и номера сильной ссылки?
- Неизвестная ссылка ссылка на боковой стол тоже? Если нет, а ссылка без ссылки относится к объектной памяти, а как насчет производительности между слабой и неизвестной?
1 ответ
Решение
Хорошо, я узнал.
- Неизвестная ссылка указывает на объект, а также сильный.
- Неизвестная ссылка быстрее, чем слабая.
- Приставной стол хранит сильные RC, слабые RC, неизвестные RC, ссылку на объект и некоторые флаги