Size: a a a

2020 April 15

WP

W Proskurin in SwiftBook
Варя Кузнецова
ага. а трассирующий по-другому определит, какой объект померший. разница только в том, как определяется
Если другими словами, то в каких условиях мы собираемся взять класс со ссылочным типом и не ссылаться на него?
источник

ВК

Варя Кузнецова... in SwiftBook
Dima Yarmolchuk
если хотите детально разобратся что такое сборщик мусора тогда почитайте как оно работает в Java
в джава трассирующийв основном (в каком-то языке можно вроде и свой наверстать сборщик к нему, но не помню точно в каком). в свифте счетчик ссылок. уверена, кто-то использует копирующий/по поколениям и тд, и его адепты возможно также не хотят его связывать со сборщиками мусора и ругаются, когда кто-то его так называет. у них свои плюсы/минусы, что-то arc не умеет но умеет трассировщик, в чем-то трассировщик ограничивает
источник

WP

W Proskurin in SwiftBook
Варя Кузнецова
ага. а трассирующий по-другому определит, какой объект померший. разница только в том, как определяется
Может быть, что эта разница ключевая. Ибо, зачем тебе класс, который не используется?
источник

ВК

Варя Кузнецова... in SwiftBook
W Proskurin
Если другими словами, то в каких условиях мы собираемся взять класс со ссылочным типом и не ссылаться на него?
var myClassVariable: MyClass? = MyClass.init()
   myClassVariable = nil
про это чтоль?
источник

IS

Igor Smirnov in SwiftBook
W Proskurin
Если у тебя есть одна активная ссылка, то ARC память не освободит.
Какие есть кейсы, когда ты создаешь класс, чтобы осталось 0 экземпляров?
самый простой (и, к сожалению, некоторые на него напарываются) - это присвоить свежесозданный экземпляр класса в weak переменную
источник

WP

W Proskurin in SwiftBook
Igor Smirnov
самый простой (и, к сожалению, некоторые на него напарываются) - это присвоить свежесозданный экземпляр класса в weak переменную
Если это ошибка, то ок. Я про кейс целенаправленный.
источник

IS

Igor Smirnov in SwiftBook
W Proskurin
Если это ошибка, то ок. Я про кейс целенаправленный.
class C { }

weak var a: C?

a = C()
print(a)
источник

IS

Igor Smirnov in SwiftBook
в консоли - nil
источник

IS

Igor Smirnov in SwiftBook
и эту ошибку совершают, потому что не смотрят на warning-и компилятора
источник

IS

Igor Smirnov in SwiftBook
Instance will be immediately deallocated because variable 'a' is 'weak
источник

IS

Igor Smirnov in SwiftBook
в более навороченных случаях компилятор может и не подсказать
источник

РУ

Роман Устюгов... in SwiftBook
Igor Smirnov
в консоли - nil
Не nil, но нужно быть начеку с этим
источник

IS

Igor Smirnov in SwiftBook
Роман Устюгов
Не nil, но нужно быть начеку с этим
это фокусы playground я полагаю
источник

РУ

Роман Устюгов... in SwiftBook
врядли. Скорее всего, область видимости влияет
источник

IS

Igor Smirnov in SwiftBook
Роман Устюгов
врядли. Скорее всего, область видимости влияет
не всегда
источник

WP

W Proskurin in SwiftBook
Даже если nil, то ARC не удалит же экземпляр из памяти?
источник

ВК

Варя Кузнецова... in SwiftBook
W Proskurin
Даже если nil, то ARC не удалит же экземпляр из памяти?
сложит и будет бесконечно наслаждаться компанией этого объекта, так выходит чтоль?
источник

👻

👻 in SwiftBook
W Proskurin
Даже если nil, то ARC не удалит же экземпляр из памяти?
Нил это не показатель, через деинит проверять нужно
источник

WP

W Proskurin in SwiftBook
Варя Кузнецова
сложит и будет бесконечно наслаждаться компанией этого объекта, так выходит чтоль?
Я могу подождать, пока ты ещё более остроумно перепишешь и тогда отвечу.
источник

WP

W Proskurin in SwiftBook
Igor Smirnov
class C { }

weak var a: C?

a = C()
print(a)
Так вот, weak указывается для того, чтобы ссылка не попала в связку сильных ссылок.
Этот пример не является корректным, так как переменная не должна быть weak.
источник