6

Tôi có một ứng dụng iPhone về cơ bản là lấy thông tin từ một API (trong XML, nhưng có thể là JSON cuối cùng). Các đối tượng kết quả thường được hiển thị trong các bộ điều khiển khung nhìn (các bảng chủ yếu).NSNotification vs. Delegate Protocols?

Đây là kiến ​​trúc ngay bây giờ.

Tôi có các lớp NSOperation tìm nạp các đối tượng khác nhau từ máy chủ từ xa. Mỗi lớp NSOperation này sẽ sử dụng một phương thức ủy nhiệm tùy chỉnh để kích hoạt các đối tượng kết quả khi chúng được phân tích cú pháp, và cuối cùng là một phương thức khi không có thêm kết quả nào. Vì vậy, giao thức cho các đại biểu sẽ được giống như:

(void) ObjectTypeResult:(ObjectType *)result; 
(void) ObjectTypeNoMoreResults; 

Tôi nghĩ rằng giải pháp hoạt động tốt, nhưng tôi kết thúc với một loạt các giao thức đại biểu xung quanh và sau đó xem các bộ điều khiển của tôi phải thực hiện tất cả các phương pháp đại biểu . Tôi không nghĩ rằng nó xấu, nhưng tôi luôn luôn trên Lookout cho một thiết kế tốt hơn.

Vì vậy, tôi đang nghĩ đến việc sử dụng NSNotifications để xóa việc sử dụng các đại biểu. Tôi có thể đưa đối tượng vào phần userInfo của thông báo và chỉ đăng các đối tượng như đã nhận và sau đó là sự kiện cuối cùng khi không còn nữa. Sau đó, tôi chỉ có thể có một phương pháp trong mỗi bộ điều khiển xem để nhận tất cả dữ liệu, ngay cả khi sử dụng nhiều đối tượng trong một bộ điều khiển. †

Vì vậy, ai đó có thể chia sẻ với tôi một số ưu điểm/nhược điểm của mỗi phương pháp. Tôi có nên xem xét tái cấu trúc mã của mình để sử dụng Sự kiện thay vì các đại biểu không? Là một trong những tốt hơn thì khác trong những tình huống nhất định? Trong kịch bản của tôi, tôi thực sự không muốn nhận thông báo ở nhiều nơi, vì vậy có thể các đại biểu dựa trên giao thức là con đường để đi.

Cảm ơn!

Trả lời

5

Thực ra, thiết kế của bạn có âm thanh. Cách tiếp cận Cocoa rõ ràng là sử dụng các đại biểu, và được ưa thích nhiều hơn để ném các đối tượng xung quanh. Ngoài ra, xác định giao thức của bạn theo cách này làm cho mã của bạn rất rõ ràng và dễ hiểu. Tất cả trong tất cả: theo kịp công việc tốt