I'd like to ask if retain cycle happens in this situation:
class TeamMember {
var closure: (() -> ())?
func method(closure: () -> ()?) {
closure()
}
func describeYourself() {
print("I'm Alexios!")
}
deinit {
print("Deinit")
}
}
let member = TeamMember()
member.closure = { [weak member] in
member?.describeYourself()
}
member.closure?()
member.method(closure: { [weak member] in
member?.describeYourself()
})
member.closure = nil
member.method(closure: {nil})
As I understand it, after the assignment to nil, the message "Deinit" should appear, but since it is not outputted, the retain cycle is there. How i can check is it deinit or not?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…