Понимание слабой и непризнанной ссылки в Swift под капотом

Я хочу полностью понять, что происходит внутри слабой и неподтвержденной референции в Swift. Для этого я прочитал MikeAsh и получил несколько вопросов.

Что уже известно:

  1. когда нет слабой (и, я полагаю, не принадлежащей) ссылки на объект, счетчик сильной ссылки сохраняется непосредственно в области памяти объекта
  2. когда появляется слабая ссылка, второе слово в памяти объекта используется повторно для ссылки на таблицу сторон
  3. Приставной столик имеет ссылку на объект
  4. слабая ссылка относится к этой таблице

И что я хочу уточнить:

  1. Какие еще таблицы хранятся внутри, кроме ссылки на объект и номера сильной ссылки?
  2. Неизвестная ссылка ссылка на боковой стол тоже? Если нет, а ссылка без ссылки относится к объектной памяти, а как насчет производительности между слабой и неизвестной?

1 ответ

Решение

Хорошо, я узнал.

  1. Неизвестная ссылка указывает на объект, а также сильный.
  2. Неизвестная ссылка быстрее, чем слабая.
  3. Приставной стол хранит сильные RC, слабые RC, неизвестные RC, ссылку на объект и некоторые флаги
Другие вопросы по тегам