11

Tôi luôn nghĩ rằng mình đã hiểu MVC, nhưng gần đây, sau khi đọc rất nhiều bài đăng Chồng tràn về chủ đề này, tôi đã khám phá ra rằng cách thức mà khung MVC làm mọi việc hơi khác nhau. Cụ thể hơn, trong cách thức mà quan điểm và mô hình tương tác, có vẻ là hai trường phái tư tưởng:MVC trong Cocoa Touch: Chế độ xem và mô hình tương tác như thế nào?

  1. Khi người dùng tương tác với quan điểm, quan điểm thông báo cho bộ điều khiển, và bộ điều khiển lần lượt thực hiện một cái gì đó cho mô hình. Khi mô hình thay đổi, mô hình sẽ thông báo cho bộ điều khiển, do đó sẽ cập nhật chế độ xem.

  2. Chế độ xem đăng ký với mô hình. Khi mô hình thay đổi, chế độ xem có vẻ như được thông báo trực tiếp rằng nó cần cập nhật chính nó.

enter image description here

Vì vậy, câu hỏi của tôi là: Trong Cocoa Touch (iOS), cách tốt nhất để làm MVC là gì? Tôi chủ yếu là mã hóa cho iOS những ngày này và tôi chỉ quan tâm đến thực tiễn tốt nhất cho nền tảng này. (Tôi không quan tâm đến cách ASP.NET, Rails, Backbone, v.v.) làm việc.)

Nó sẽ là tuyệt vời nếu có thể cung cấp mã ví dụ KVO. Cảm ơn. =)

Trả lời

3

Tôi thấy rằng lý thuyết cơ bản nhất về vấn đề này được giảng dạy tại Đại học Stanford bởi một giáo viên rất tài năng tên là Paul Haggarty. Tôi khuyên bạn nên tìm khóa học này trên iTunes U - có 18 bài giảng trong video HD và các tệp ppt để học hỏi. Đây là một liên kết đến trang web của khóa học: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/

Tôi nhớ rằng anh ấy đã trải qua phần MVC của tài liệu rất nhanh chóng nhưng kỹ lưỡng, làm cho vấn đề này rất rõ ràng. Ngoài ra, tôi sẽ phải nói rằng trường số 1 của tư tưởng là một trong những tôi đồng ý nhiều hơn với.

1

Theo kinh nghiệm của tôi, (1) nên được sử dụng trong hầu hết các trường hợp.

Trong (2), vì chế độ xem không sở hữu mô hình, bạn luôn cần chuyển các thay đổi từ mô hình sang chế độ xem và nếu lượt xem có thể cập nhật từ nhiều mô hình, bạn cần phải viết mã riêng cho .

Trong (1), phương pháp cập nhật chế độ xem từ bộ điều khiển có thể được nhiều mô hình sử dụng, bộ điều khiển có tham chiếu đến các mô hình, do đó bạn không cần phải chuyển bất kỳ thông tin nào trong thông báo.

Hiệu suất thông minh Tôi không biết nếu có bất kỳ khác biệt nào nhưng mã trong (1) sẽ rõ ràng hơn rất nhiều.

5

Apple advocates use of the first method, tôi tin.

Đây là phiên bản sửa đổi của mô hình MVC tiêu chuẩn (phương pháp thứ hai), nơi mô hình và chế độ xem được phân tách hoàn toàn. Cá nhân tôi nghĩ rằng nó sạch hơn và dễ mở rộng hơn.

  1. Logic được tập trung trong bộ điều khiển.
  2. Không cần phải viết chế độ xem tùy chỉnh để xử lý sự kiện từ mô hình. Thông thường bạn sẽ viết một bộ điều khiển tùy chỉnh nhưng sử dụng các lớp xem do SDK cung cấp. Theo phương pháp thứ hai, bạn có thể phải tạo một khung nhìn tùy chỉnh để xử lý các sự kiện từ mô hình.
Các vấn đề liên quan