Cả hai loại đối tượng nhiều hay ít đều hành xử theo cùng một cách, đó là vấn đề của những gì họ làm đó là câu hỏi.
Đối tượng loại đại biểu phản hồi các hành động mà đối tượng khác thực hiện. Ví dụ, giao thức UITableViewDelegate
có các phương thức như didSelectRowAtIndexPath
để thực hiện các hành động khi người dùng chọn một hàng cụ thể trong bảng.
Trong khi đối tượng kiểu nguồn dữ liệu cung cấp dữ liệu cho đối tượng khác. Ví dụ một lần nữa, giao thức UITableViewDataSource
có các phương thức như cellForRowAtIndexPath
và numberOfRowsInSection
chỉ ra những gì sẽ được hiển thị trong bảng.
Không có sự khác biệt khó khăn giữa hai điều khoản về biên dịch, nó chỉ đơn giản là một kiểu mã hóa để làm cho những gì các đối tượng làm những gì rất rõ ràng cho người dùng của mã.
EDIT:
Để trả lời câu hỏi thứ hai của bạn: nếu bạn muốn mỗi cảnh báo để phản ứng khác nhau, bạn sẽ cần phải viết một đại biểu khác nhau cho mỗi cảnh báo. Ví dụ: nếu một trong các cảnh báo của bạn là cảnh báo xác nhận lưu (có thể bạn sẽ ghi đè lên một tệp và bật lên để xác nhận rằng người dùng muốn làm gì), bạn sẽ có một đối tượng như:
@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate>
@end
Và trong @implementation
cho SaveConfirmAlertDelegate
bạn sẽ triển khai tính năng lưu phù hợp tùy thuộc vào nút mà người dùng đã nhấn trong cảnh báo.
Khi bạn tạo chế độ xem cảnh báo, bạn chỉ định đối tượng đại biểu sẽ là gì, điều này không phải là self
. Bạn có thể có bốn đại biểu của bạn được lưu trữ như các đối tượng khác nhau và đặt chúng trên các cảnh báo khi cần thiết.
Tôi hy vọng điều này sẽ xóa mọi thứ lên
Nguồn
2012-06-19 19:04:07
Cảm ơn bạn đã giải thích vấn đề đầu tiên của mình. Tôi đã thêm một ví dụ cho câu hỏi của mình. – RMDan
@RMDan Tôi đã thêm một lời giải thích bổ sung cho câu hỏi thứ hai của bạn, tôi hy vọng rằng sẽ xóa mọi thứ lên một chút –
Điều đó có ý nghĩa hoàn hảo. Tôi sẽ phải tìm hiểu thêm về phái đoàn nhưng nó bắt đầu có ý nghĩa. – RMDan