Мы используем файлы cookie
Мы используем файлы cookie для улучшения работы сайта и предоставления вам персонализированного опыта. Правила использования файлов cookie можно найти в нашей политике конфиденциальности
Wick-ссылка (weak
) — это невладеющая ссылка. Она не увеличивает счетчик ссылок объекта. Используется для предотвращения циклов сильных ссылок, например, между делегатом и его владельцем. Если объект, на который указывает слабая ссылка, деаллоцируется, слабая ссылка автоматически становится nil
.
Unowned-ссылка (unowned
) — это также невладеющая ссылка и не увеличивает счетчик ссылок объекта. Отличие от weak
в том, что unowned
не может быть опционалом (Optional
) и всегда должна указывать на существующий объект. Если объект, на который указывает unowned
ссылка, деаллоцируется до того, как ссылка перестанет существовать, попытка доступа к этой ссылке приведет к ошибке выполнения (fatal error). Используется там, где жизненный цикл связанного объекта гарантированно дольше или равен жизненному циклу объекта с unowned
-ссылкой (например, цикл сильных ссылок, где один из объектов имеет четко определенный жизненный цикл).
Сравнение:
Особенность | weak | unowned |
---|---|---|
Невладеющая | Да | Да |
Увеличивает SC | Нет | Нет |
Может быть nil | Да (автоматически обнуляется) | Нет (должна указывать на объект) |
Безопасность | Более безопасна при возможном деаллоцировании | Менее безопасна (фатальная ошибка при доступе к деаллоцир |
Wick-ссылка (weak
) — это невладеющая ссылка. Она не увеличивает счетчик ссылок объекта. Используется для предотвращения циклов сильных ссылок, например, между делегатом и его владельцем. Если объект, на который указывает слабая ссылка, деаллоцируется, слабая ссылка автоматически становится nil
.
Unowned-ссылка (unowned
) — это также невладеющая ссылка и не увеличивает счетчик ссылок объекта. Отличие от weak
в том, что unowned
не может быть опционалом (Optional
) и всегда должна указывать на существующий объект. Если объект, на который указывает unowned
ссылка, деаллоцируется до того, как ссылка перестанет существовать, попытка доступа к этой ссылке приведет к ошибке выполнения (fatal error). Используется там, где жизненный цикл связанного объекта гарантированно дольше или равен жизненному циклу объекта с unowned
-ссылкой (например, цикл сильных ссылок, где один из объектов имеет четко определенный жизненный цикл).
Сравнение:
Особенность | weak | unowned |
---|---|---|
Невладеющая | Да | Да |
Увеличивает SC | Нет | Нет |
Может быть nil | Да (автоматически обнуляется) | Нет (должна указывать на объект) |
Безопасность | Более безопасна при возможном деаллоцировании | Менее безопасна (фатальная ошибка при доступе к деаллоцир |
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.