Sự khác nhau giữa weak và strong ?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
1.496 lượt xem

Strong pointer là một con trỏ, trỏ đến một đối tượng và sở hữu (own) đối tượng đó.

Weak pointer là một con trỏ, trỏ đến một đối tượng nhưng không sở hữu (own) đối tượng đó. Khi tạo ra một reference strong đến một đối tượng, retainCount của đối tượng đó tăng lên 1.

  • Khi release một tham chiếu strong đến một đối tượng, retainCount của đối tượng giảm đi 1 Nghĩa là: tham chiếu strong sở hữu đối tượng mà nó tham chiếu đến, nó quyết định đến sự tồn tại của đối tượng.
  • Khi retainCount của đối tượng về 0 thì đối tượng được giải phóng hoàn toàn khỏi bộ nhớ
  • Khi retainCount > 0 và gán object = nil thì đối tượng cũng được giải phóng hoàn toàn khỏi bộ nhớ
  • Khi tạo ra một tham chiếu "weak" đến một đối tượng, retainCount của đối tượng đó không tăng lên 1.
  • Khi release một tham chiếu "weak" đến một đối tượng, retainCount của đối tượng đó không bị giảm đi 1. weak được sử dụng chủ yếu trong kết nối IBOutlet và sử dụng để tránh trường hợp retain cycle
{{login.error}}