Похоже ли «неизвестное» на «сильную» ссылку, которая не увеличивает количество ссылок в Swift? - PullRequest
0 голосов
/ 06 ноября 2018

Я проводил некоторые исследования неизвестного эталонного типа, пытаясь обернуть голову, как он сравнивается с сильным эталоном.

Обсудив это с моим коллегой, просмотрев статьи, я наконец-то натолкнулся на документ Swift, в котором объясняется, чем неподходящее отличается от слабого тем, что "если захваченное упоминание никогда не станет нулевым, оно всегда должно регистрироваться как неподходящее ссылка, а не слабая ссылка ". - https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html

Если я правильно понимаю unowned, мне кажется, что это похоже на «сильную» ссылку, которая не увеличивает количество ссылок. Это точно?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 06 ноября 2018

Если я правильно понимаю неподписанные, мне кажется, что это похоже на «сильную» ссылку, которая не увеличивает количество ссылок. Это точно?

Да, это точно, насколько это возможно. Но это не совсем о подсчете ссылок, кроме как во вторую очередь. Речь идет о retain и release, вызовах, которые происходят, чтобы манипулировать счетчиком ссылок. Сильная ссылка вызывает retain при назначении, а затем обрабатывает release. Неизвестная ссылка не делает; он вообще ничего не делает для управления памятью назначенного объекта.

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

...