Сравните Snow и отобразите полную информацию из таблицы SQL Server

Вот блестящие цитаты из Форумы разработчиков Apple описали вкусные детали:

unowned vs unowned(safe) vs unowned(unsafe)

unowned(safe) - это ссылка, не относящаяся к владельцам, которая утверждает, что объект все еще жив. Это похоже на слабую необязательную ссылку, которая неявно распаковывается с x! каждый раз, когда к ней обращаются. unowned(unsafe) походит на __unsafe_unretained в ARC - это не-владеющая ссылка, но нет проверки времени выполнения, что объект все еще жив при доступе, поэтому оборванные ссылки попадут в мусорную память. unowned всегда является синонимом для unowned(safe) в настоящее время, но предполагается, что он будет оптимизирован для unowned(unsafe) в сборках -Ofast, когда проверки времени выполнения отключены.

blockquote>

unowned vs weak

unowned фактически использует гораздо более простую реализацию, чем weak. Объекты Native Swift несут два подсчета ссылок, а ссылки unowned нажимают недостоверный счетчик ссылок вместо значения strong . Объект деинициализируется, когда его число strong достигает нуля, но оно фактически не освобождается до тех пор, пока счетчик ссылок unowned также не достигнет нуля. Это приводит к тому, что память удерживается немного дольше, когда есть неопубликованные ссылки, но обычно это не проблема, когда используется unowned, потому что связанные объекты должны иметь почти равные сроки жизни в любом случае, и это намного проще и ниже накладных расходов чем реализация на стороне стола, используемая для обнуления слабых ссылок.

blockquote>

Обновление: в современном Swift weak внутренне используется тот же механизм, что и unowned. . Таким образом, это сравнение неверно, поскольку оно сравнивает Objective-C weak с Swift unonwed.

Причины

Какова цель сохранения памяти в памяти после владения ссылками достигают 0? Что произойдет, если код попытается что-то сделать с объектом, используя неопубликованную ссылку после того, как он деинициализирован?

Память сохраняется в памяти, так что ее значения сохранения остаются доступными. Таким образом, когда кто-то пытается сохранить сильную ссылку на незарегистрированный объект, среда выполнения может проверить, что сильный счетчик ссылок больше нуля, чтобы гарантировать сохранность объекта.

Что происходит с владением или отсутствием ссылки на объект? Является ли их время жизни отделенным от объекта, когда он деинициализирован или их память также сохраняется до тех пор, пока объект не будет освобожден после того, как будет освобождена последняя незанятая ссылка?

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

blockquote>

Возбуждено, да?

1
задан DxTx 20 March 2019 в 14:37
поделиться