簡體   English   中英

有人可以在objective-c中解釋代表嗎?

[英]Can someone please explain delegates in objective-c?

我一直在使用Objective-C,並且非常了解它的大部分功能。 但是,代表們的概念使我望而卻步。 有人可以簡單易懂地解釋代表是什么,如何在iPhone SDK中使用它們,以及如何在我自己的代碼中最好地利用它們?

謝謝!

在Objective-C中使用委托有幾個主要原因,這些原因略有不同:

  1. 增強框架類的基本功能。 例如,一個UITableView本身很無聊,所以你可以給它一個委托來處理有趣的位(創建表格單元格,為節標題添加文字,你有什么)。 這樣,UITableView永遠不會改變,但不同的表視圖可以看起來和行為有很大不同。

  2. 與依賴關系層次結構中的父對象進行通信。 例如,您可能有一個帶有按鈕的視圖,用戶可能會推動該按鈕執行影響其他視圖的操作。 視圖必須向其父視圖或視圖控制器發送消息,以便它可以創建或銷毀或修改其他視圖。 為此,您將父對象(最有可能通過協議)作為弱引用傳遞到視圖中(在Objective-C中,為assign屬性)。 然后,視圖可以將協議中聲明的任何消息發送到父對象或委托對象。

這種方法不需要涉及視圖。 例如,NSURLConnection使用此機制將事件傳遞回其委托,該委托可能是創建它的對象。

本質上,所有委托都是一個接受來自另一個對象的反饋的對象。 簡而言之,當一個對象發生的事情發生時,它會告訴它的委托(假設它有一個)。

例如,假設我有一個UITeController,其中UITextView放置在視圖的中間。 我將我的UIViewController設置為UITextView的委托。 然后,當對文本視圖執行某些操作(開始編輯,文本更改,結束編輯等)時,它會告訴它的委托,以便它可以執行它需要做的任何邏輯,例如每次字符更改時進行拼寫檢查,或者解除鍵盤收到返回鍵時按。

委托方法執行與C中的回調函數類似的功能。

希望有道理:)

我從Lynda.com教程中得到的最好和最簡單的概念是:當你設置一個代表時,它意味着你已經完成了工作。 因此,如果要使用以協議方法編寫的方法,則必須通過在Delegate類參考中搜索並使用它們來實現它們。 我希望它有所幫助。

順便說一句,代表們是優秀的。 他們是你的朋友。 它們的制作使您作為程序員的生活變得更加輕松。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM