Khi táo phát triển UITableView
cho iPhone đầu tiên, chúng có vấn đề về hiệu suất khi cuộn qua nó. Sau đó, một kỹ sư thông minh phát hiện ra rằng nguyên nhân của việc này là phân bổ các vật thể đi kèm với một mức giá, do đó, ông đã đưa ra một cách để tái sử dụng các tế bào.UITableView dequeueReusableCellWithIdentifier Lý thuyết
"phân bổ đối tượng có chi phí hiệu quả, đặc biệt nếu việc phân bổ có thể xảy ra nhiều lần trong khoảng thời gian-nói ngắn, khi cuộn người dùng một cái nhìn bảng. Nếu bạn sử dụng lại các tế bào thay vì phân bổ mới, bạn tăng cường hiệu suất xem bảng. "
Nguồn: Thư viện tham khảo iOS
Để tái sử dụng một tế bào bạn sử dụng:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Bây giờ, những gì tôi đang tự hỏi là, những gì thực sự xảy ra ở đây? Liệu nó nhìn trong TableView nếu có một tế bào với định danh đó và chỉ trả về một trong đó? Vâng yea duh, nhưng nếu nó gửi một tham chiếu thay vì phân bổ và tôi có một cái nhìn bảng với giả sử 4 ô với cùng một định danh tất cả có thể nhìn thấy. Làm thế nào nó có thể nhân bản thân thành bốn trường hợp mà không phân bổ?
Tôi muốn biết điều này vì tôi đang xây dựng thành phần kiểu lịch và tất cả các ô có cùng cấu trúc chỉ văn bản trong các thay đổi. Vì vậy, nếu tôi bằng cách nào đó có thể tái sử dụng các tế bào của tôi thay vì phân bổ tôi nghĩ rằng tôi có thể có được một hiệu suất tốt hơn.
Lý thuyết của riêng tôi là nó phân bổ bốn ô (đơn giản là vì nó có quá). Khi một tế bào biến mất khỏi màn hình, nó sẽ được đưa vào hàng đợi sử dụng lại của TableView. Khi một tế bào mới là cần thiết nó trông trong que nếu một tế bào với cùng một định danh có sẵn, nó gọi phương thức prepareForReuse
trên ô đó và nó tự xóa khỏi hàng đợi.
Câu trả lời ngắn gọn: Có. Nó có một hàng đợi tái sử dụng riêng biệt/thiết lập mà không giống như những thứ đã có trong bảng. –