Câu hỏi phỏng vấn Objective-C
Câu hỏi

Tại sao delegate trong Objective-C không bao giờ được giữ lại?

Câu trả 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

middle

Gợi ý câu hỏi phỏng vấn

senior

Trong Objective-C, khi bạn gọi một phương thức trên một con trỏ nil, điều gì sẽ xảy ra?

expert

Giải thích trường hợp sử dụng khi ARC không giúp bạn giải phóng bộ nhớ (nhưng GC sẽ giúp)?

junior

Sự khác biệt giữa copyretain trong Objective-C là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào