Strong: The object strongly refers to a delegate and the external world cannot destroy the delegate. Weak: Indicates that the object is not responsible for maintaining the delegate. The delegate's destruction is controlled externally. Automatically delegate = nil when the object to which delegate points is destroyed. Assign: Has the effect of weak, but requires manually setting nil. Why use weak instead of assign? Assign is a pointer assignment that does not operate on reference counting. If the delegate is not set to nil after the delegate runs out, wild Pointers may be generated. The weak delegate is automatically nil once it runs out, and no wild pointer is generated.Copy the code