12/08/2018, 14:59

Delegation trong IOS

Trong số design patterns được dùng phổ biến trong việc phát triển ứng dụng IOS, delegation là một trong số design patterns mà chúng ta thường thấy xuất hiện khá nhiều. Trong bài viết này , mình sẽ giúp các bạn giải đáp câu hỏi Delegation là gì ?? Nào hãy cùng mình làm sáng tỏ câu hỏi đó. ...

Trong số design patterns được dùng phổ biến trong việc phát triển ứng dụng IOS, delegation là một trong số design patterns mà chúng ta thường thấy xuất hiện khá nhiều.

Trong bài viết này , mình sẽ giúp các bạn giải đáp câu hỏi Delegation là gì ?? Nào hãy cùng mình làm sáng tỏ câu hỏi đó.

Delegation Xét đến từ “delegation”. Có 3 điều mình nghĩ đến : 1 . Động từ “delegate”, có nghĩa là “kiểm soát”. 2. Danh từ “a delegate” có nghĩa là “một người hành động cho người khác”. 3. Danh từ đã được tạo ra “a delegator”, hoặc đúng hơn là người đứng đầu nghĩa là “một người uỷ thác việc gì đó cho người khác”.

Trong thực tế , từ delegation đóng gói mối quan hệ và trách nhiệm . Một delegator / người đứng đầu sẽ ủy quyền việc kiểm soát hoặc công việc cho người khác gọi là delegate .

Chúng ta đang làm việc với thể hiện của class (hoặc các cấu trúc dữ liệu khác như structs, nhưng mình sẽ để nó đơn giản và nói class để gói gọn ý tưởng). Đối với delegation xảy ra trong phần mềm, bạn sẽ có một tình huống mà một class (a delegator / class chính) sẽ phân quyền kiểm soát hoặc công việc, ở đây có nghĩa là logic hành vi, đến class khác được gọi là delegate.

Delegation được sử dụng như thế nào ?? Đúc kết lại delegation là dạng design pattern là một trong số được Apple chấp nhận và dùng phổ biến với các API của iOS. Nó dùng để chuyển công việc từ class này sang class khác, qua đó tạo ra sự tách biệt giữa công việc và những thứ liên quan. Nhưng những công việc hay những thứ liên quan đó là gì? Delegation được sử dụng trong thực tế như thế nào?

Communication

Trong thực tế , delegation thường được sử dụng như một cách để một class giao tiếp với class khác. Quan sát một số hành vi mà delegate thực hiện từ API của Apple cho chúng ta những thông tin về việc này. Lấy ví dụ sau đây từ UITableViewDelegate :

  • tableView(_:willSelectRowAtIndexPath:)
  • tableView(_:didSelectRowAtIndexPath:)
  • tableView(_:didHighlightRowAtIndexPath:)

Hoặc mẫu từ UIScrollViewDelegate :

  • scrollViewDidScroll(_            </div>
            
            <div class=
0