在iphone中委託的確切含義是什麼?它是如何在UIViewController中實現的?iPhone中的代表是什麼?
回答
委託是通常對另一個對象中的某個事件作出反應並且/或者可以影響另一個對象如何表現的對象。這些對象一起工作以完成一項任務。通常,委託對象將由許多其他具有更具體任務的對象共享。代表本身將更加抽象,並且對於不同的任務應該是非常可重用的。包含委託的對象通常在發生觸發事件時向委託發送消息,爲委託人提供執行其指定任務的機會。
還有更多文檔here,您應該閱讀這些文檔以瞭解Cocoa和Cocoa touch中的委託模式,特別是如何在UIWindow和UIView之間使用委派。這是iPhone體系結構中的一個整體設計模式,如果您希望設計一個乾淨的應用程序,應該掌握它。
Delegation is a pattern和這個術語在可可中是相同的。
代表未執行in a UIViewController
。不同種類的視圖控制器都可以委託一個委託來處理某些任務。最好的例子之一(如果我們正在談論iPhone)是UITableViewDelegate
,當某些與表格相關的事件發生時,它被調用來做某些事情。
代表用於將對象的任務委託給其所有者(或任何對象,真的)。這樣做的一個好的原因是它可以更容易地使用組合而不是繼承。委託是對符合指定協議的對象的引用,因此您可以保證它將實現所需的方法。一個很好的例子是UIApplicationDelegate。請注意委託方法(來自協議)是如何使用applicationDid,applicationShould,applicationWill等動詞的。通常,委託方法要麼需要做某些事情的權限(並且選擇這樣做,在方法中,而不是隻使用BOOL屬性,以獲得更大的靈活性),或通知代表將發生或發生的事件。
委託的概念在iOS中很常見。一個對象通常會依賴另一個對象來完成某些任務。這種關注的分離使得系統變得簡單,因爲每個對象只做它擅長的事情,並讓其他對象處理剩下的事情。表格視圖提供了一個很好的例子。
委託用於傳遞/傳遞類/結構中兩個對象的數據以完成任務。 例如:考慮將機密數據發送給第二VC(接收者或代表或祕書)的第一VC(發件人或委託人或CEO)。 這是通過secondVC符合一個
protocol passDataDelegate { func passdata(data: String) }
class secondVC : UIViewController, passDataDelegate {
func passdata(data: String) {
print("CEO passed //(data)")
}
}
class firstVC : UIViewController {
var delegate : passDataDelegate?
}
因爲,接收符合協議passDataDelegate
現在創建的兩個firstVC & secondVC
let sender = firstVC()
let receiver = secondVC()
對象完成。因此,它的類型爲UIViewController
或passDataDelegate
,因爲如果一個類符合協議,那麼它的類的對象可以將協議作爲類型。
因此,分配sender.delegate = receiver
現在,我們可以CEO(發件人)可以通過其委託財產將數據傳遞給祕書(接收器)作爲
sender.delegate?.passdata("Confidential data")
Output: CEO passed Confidential data
現在的祕書(接收器)可以使用該數據完成她的進一步任務。
鏈接已死 – lindenrovio 2014-05-24 14:10:49
另一個有用的鏈接在這裏 - [鏈接](https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html) – 2014-10-16 06:15:19