Tôi muốn xem dựa trên NSTableview của tôi để không sử dụng lại TableCellViews được tạo trước đó được cuộn ra khỏi phạm vi. Tôi thấy rằng điều này sẽ có thể với UITableView bằng cách ghi đè dequeueReusableCellWithIdentifier: để trả về nil. Ist có giải pháp tương tự cho NSTableView?Làm thế nào để làm cho NSTableView không tái sử dụng TableCellViews
-
Bối cảnh của tôi: Tôi có một cái nhìn khá phức tạp dựa trên-tableView ràng buộc để ManagedObjects theo cách thông thường (tức là bảng nội dung, -selection và -sortdescriptor đang bị ràng buộc để một arraycontroller và tableCellView-yếu tố liên kết với objectValue).
Bảng có khoảng 20 cột nhưng tối đa 400 hàng. Cuộn thực sự chậm, nhưng thời gian profiling chỉ ra rằng không có nguồn duy nhất của sự chậm chạp tồn tại (lớn nhất duy nhất phương pháp-cuộc gọi mất khoảng 5% thời gian). Sau khi lưu trữ các thuộc tính có nguồn gốc/tùy chỉnh của ManagedObject của tôi mà không cần tăng hiệu năng nhiều, tôi hiện đang cố gắng lưu vào bộ nhớ cache (để tránh việc rebind thường xuyên của tablecellViews khi một khung nhìn đi vào phạm vi).
Điều tôi đang cố gắng hiện tại là không ràng buộc nội dung bảng, nhưng để có được chế độ xem của tôi bằng giao thức NSDatasource. Có trong
-(NSView*) tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
tôi muốn trả lại TableCellView nếu được lưu trong bộ nhớ cache. Nếu không tôi tạo một hình mới qua
[self.table makeViewWithIdentifier:... owner:self];
Kể từ makeViewWithIdentifier có thể trở lại quan điểm rằng đã được lưu trữ bởi tôi, các bảng nội dung được điều sai lầm với các tế bào sai.
Hiệu suất là tốt hơn đáng kể với cách tiếp cận này ...
-
ý tưởng khác về giúp cuộn performant hơn cũng được appriciated.
Tôi muốn được biết liệu bạn có ở đâu với điều này không. Tôi nghĩ rằng tôi có vấn đề ngược lại trong đó NSTableView của tôi là * không * tái sử dụng các tế bào vì một lý do nào đó. Tôi đã thử PXListView, nhưng có hiệu suất tồi tệ hơn và rất nhiều lỗi, vì vậy tôi muốn gắn bó với NSTableView nhưng làm việc ra làm thế nào để làm cho nó xem bộ nhớ cache mà tôi nghĩ rằng nó phải làm. Theo như vấn đề của bạn đi, bạn sẽ có thể tạo ra một định danh duy nhất cho mỗi lần xem hoặc là sẽ gây ra sử dụng bộ nhớ khủng khiếp? – danpalmer