Tại sao delegate trong Objective-C không bao giờ được giữ lại?
Tại sao delegate trong Objective-C không bao giờ được giữ lại?
Trong Objective-C, delegate thường không được giữ lại (retain) để tránh tình trạng "strong reference cycle" (chu kỳ tham chiếu mạnh), còn được biết đến là "retain cycle". Một chu kỳ tham chiếu mạnh xảy ra khi hai đối tượng giữ tham chiếu mạnh đến nhau, dẫn đến việc không đối tượng nào được giải phóng khỏi bộ nhớ khi chúng không còn được sử dụng nữa. Điều này gây ra rò rỉ bộ nhớ, vì bộ thu gom rác (trong trường hợp của Objective-C là Automatic Reference Counting - ARC) không thể giải phóng bất kỳ đối tượng nào trong chu kỳ tham chiếu mạnh.
Delegate thường là một đối tượng mà đối tượng khác (thường là một đối tượng UI hoặc một đối tượng hệ thống) gửi thông điệp để thông báo về các sự kiện hoặc để yêu cầu dữ liệu. Nếu một đối tượng giữ một tham chiếu mạnh đến delegate của nó, và delegate đó cũng giữ một tham chiếu ...
middle
Chưa có bình luận nào