iOS Swift на Objective-C, как передавать слабые ссылки на массивы? - PullRequest
0 голосов
/ 24 августа 2018

Я хотел бы понять, как Swift и target-c обрабатывают передачу нулевых ссылок.Я знаю, что не могу добавить nil в изменяемый массив Objective-C.

Как обрабатывается ноль в следующем сценарии:

  • Класс Swift является слабой ссылкой наблюдатель передан в класс Objective-C
  • Цель-C сохраняет ссылку на класс Swift в массиве
  • Класс Swift отменен, его слабая ссылка обращается к nil
  • Objective-C теперь имеет массив с одним из элементов, указывающих на nil

Продолжает ли функционировать класс Objective-C или происходит сбой при попытке перебрать массив и получить нулевую ссылку?

1 Ответ

0 голосов
/ 24 августа 2018

Если вы не используете NSPointerArray, при добавлении объекта в массив массив будет содержать жесткую ссылку на него, предотвращая освобождение объекта.

Только после удаления объекта из массива или освобождения самого массива объект будет иметь право на освобождение.

Это означает, что нельзя оставлять массив с нулевой ссылкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...