Mặc dù tôi đã tìm kiếm nhiều thông tin về Cocoa Bindings, tôi vẫn tương đối không hài lòng với thông tin mà tôi có và đã nhận được. Dường như chủ đề đó hơi rắc rối đối với nhiều người và nhiều người chỉ tránh né mô hình này, điều mà tôi tin là không nên.Tại sao sử dụng NSObjectController
Tất nhiên, nó có vẻ rằng ràng buộc đôi khi quá phức tạp hoặc có lẽ được thiết kế với quá nhiều chi phí ...
Tuy nhiên, tôi có một câu hỏi rất trực tiếp và cụ thể: Tại sao NSObjectController cần thiết nếu tôi có thể thiết lập các ràng buộc trực tiếp?
Ví dụ, mã:
[controller bind:@"contentObject" toObject:self withKeyPath:@"numberOfPieSlices" options:nil];
[slicesTextField bind:@"value" toObject:controller withKeyPath:@"content" options:nil];
[stepperControl bind:@"value" toObject:controller withKeyPath:@"content" options:nil];
Liệu chính xác giống như:
[slicesTextField bind:@"value" toObject:self withKeyPath:@"numberOfPieSlices" options:nil];
[stepperControl bind:@"value" toObject:self withKeyPath:@"numberOfPieSlices" options:nil];
Trong trường hợp của tôi ở đây, chúng ta đang nói về tài sản của lớp bên trong đó tất cả mọi thứ đang xảy ra, vì vậy Tôi đoán nhu cầu về NSObjectController là khi nào:
đường dẫn chính cho bộ điều khiển là đối tượng và ràng buộc các điều khiển khác là cần thiết đối với các thuộc tính của nó, không phải giá trị của nó như với các giá trị nguyên thủy và hàm bao quanh chúng là trường hợp (numberOfPiesSlices trong trường hợp của tôi là NSInteger). giữa các đối tượng trong một số
Ai đó có thể xác nhận hoặc từ chối điều này không?
Các thành phần của giao diện người dùng có thể bị ràng buộc với bộ điều khiển đối tượng hoặc một thứ khác, như được nói trong câu hỏi. Vậy một bộ điều khiển đối tượng sẽ loại bỏ mã nào? –
Mã nơi bạn thiết lập ràng buộc ở vị trí đầu tiên - bạn có thể làm điều này trong IB với NSObjectController. Trừ khi tôi nhầm lẫn và bạn có thể thiết lập các ràng buộc trong IB với các đối tượng điều khiển không *? Hạnh phúc để được sửa chữa nếu có. – jrturton
Bạn không thể thiết lập một ràng buộc trên một đối tượng đơn giản trong IB hoặc trình soạn thảo nib, nhưng bạn có thể liên kết * với * một đối tượng đơn giản. Mục đích là gì để tạo ra một bộ điều khiển đối tượng khác ngoài việc liên kết với nó - và nếu không, tại sao không ràng buộc điều khiển trực tiếp với đối tượng mà nó cần sao lưu nó? –