Tôi đang lướt qua blog tuyệt vời được duy trì bởi Scott Stevenson và tôi đang cố gắng hiểu một khái niệm cơ bản của Objective-C về việc giao cho các đại biểu thuộc tính 'gán' so với 'giữ lại'. Lưu ý, cả hai đều giống nhau trong một môi trường thu gom rác. Tôi chủ yếu quan tâm đến một môi trường không dựa trên GC (ví dụ: iPhone).
Trực tiếp từ blog của Scott:
"Từ khóa gán sẽ tạo ra một setter gán trực tiếp giá trị cho biến thể hiện, thay vì sao chép hoặc giữ lại nó. Điều này tốt nhất cho các kiểu nguyên thủy như NSInteger và CGFloat hoặc các đối tượng bạn không sở hữu trực tiếp, chẳng hạn như đại biểu."
Điều đó có nghĩa là bạn không trực tiếp sở hữu đối tượng đại biểu? Tôi thường giữ các đại biểu của mình, bởi vì nếu tôi không muốn họ đi xuống vực thẳm, thì giữ lại sẽ chăm sóc điều đó cho tôi. Tôi thường trừu tượng UITableViewControll khỏi dataSource tương ứng và ủy nhiệm của nó. Tôi cũng giữ lại đối tượng cụ thể đó. Tôi muốn đảm bảo rằng nó không bao giờ biến mất để UITableView của tôi luôn có đại biểu của nó.
Ai đó có thể giải thích thêm về việc tại sao / tại sao tôi sai, vì vậy tôi có thể hiểu mô hình chung này trong lập trình Objective-C 2.0 về việc sử dụng thuộc tính gán cho đại biểu thay vì giữ lại không?
Cảm ơn!