2012-07-21 23 views
5

https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.htmliOS mô hình điều khiển lớp thông báo Object

Tại diễn đàn, tôi thấy những điều sau đây liên quan đến cách các lớp mô hình nên giao tiếp với ViewController.

"Khi đối tượng mô hình thay đổi (ví dụ, dữ liệu mới được nhận qua kết nối mạng), nó sẽ thông báo đối tượng điều khiển, cập nhật đối tượng xem thích hợp."

Câu hỏi của tôi là, đối tượng mô hình thông báo cho đối tượng Controller như thế nào? Có nhiều cách khác nhau để thực hiện điều này? Lớp mô hình của tôi nhận vị trí của người dùng và sau đó gọi một dịch vụ web. Làm thế nào tôi nên thông báo cho đối tượng điều khiển khi dữ liệu đó được tải xuống?

Cảm ơn

Trả lời

4

Có một số cách để thực hiện việc này, tùy thuộc vào trường hợp cụ thể của bạn. Nói chung, bạn sẽ sử dụng một giao thức/thực hiện đại biểu, quan sát giá trị quan trọng, hoặc thông báo. Có một cái nhìn tổng quan khá tốt here.

Edit:

Nghĩ rằng tôi nên thêm, như bình luận cho câu trả lời này đề cập: sử dụng các khối gọi lại cũng là một lựa chọn rất rắn, tùy thuộc vào nhu cầu của bạn. Có rất nhiều yếu tố quyết định có thể về giải pháp nào là tốt nhất cho những trường hợp nào nhưng đây là một phác thảo chung mà tôi tuân theo.

Nếu bạn được đảm bảo chỉ cần một người quan sát tại một thời điểm: Tôi thường sử dụng các khối hoặc đại biểu. Sở thích cá nhân của tôi là tôi sử dụng các khối nếu chỉ có một hoặc hai cuộc gọi lại vì đây là nơi chúng tỏa sáng, nhưng tôi sử dụng các giao thức đại biểu nếu có nhiều phương pháp có thể.

Nếu bạn có thể cần nhiều người quan sát, tôi sử dụng thông báo qua NSNotificationCenter.

Tôi sử dụng Khóa-giá trị quan sát khi tôi chỉ cần quan sát các thuộc tính cụ thể trên một thể hiện, thay vì các sự kiện.

+3

Đừng quên các khối;) – Ecarrion

Các vấn đề liên quan