Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
2.6k views
Welcome To Ask or Share your Answers For Others

1 Answer

等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...