簡體   English   中英

調用委托方法

[英]Calling the delegate methods

我仍然無法完全理解這些委托方法是如何被調用的。 我在一個類中有UIViewControllerUITextFieldDelegate ,它將調用其委托方法而不指定textField.delegate = self;

但是對於像UIWebViewDelegate這樣的不同目的,我們應該輸入像webView.delegate = self; 似乎它正在調用它的委托方法。 完善。

但現在我遇到了一個問題。 我在同一個類中使用CLLocationManagerDelegateCALayer 我兩個都給了location.delegate =self; layer.delegate =self; 在某些時候,兩者都相互沖突,只有一個是CLLocationManagerDelegateCALayer 另一件事就是停止了。 我不知道為什么會這樣發生? 任何原因? 我們怎樣才能克服這一點。 甚至我計划使用其他一些frameWork,比如說UIWebView 對於那些委托方法,我也將面臨同樣的問題。 你能告訴我它為什么會這樣嗎?

在沒有指定它們的情況下調用其委托的類具有默認實現,這意味着它們已經知道該做什么,並且只有在重寫這些方法時才會改變它們的行為。

將2個或更多個類設置為同一個委托不應相互干擾(除非出於非常奇怪的原因,在兩個自定義類中該方法的命名方式相同)。

您的問題很可能是您沒有實現這些方法或使用這些類錯誤的事實。

例如,位置管理器要求您創建實例,配置它並開始運行更新。 這種類型的委托最常用的方法是“確實更新位置”(或類似的東西)。 如果您希望每次收到新位置時都要通知您必須執行的操作。 否則,您必須隨時手動讀取位置。

作為建議,每次為對象設置委托時,都必須執行object.delegate = self; 事情。 您可能已經注意到,在標題中指定它符合該協議之前,您將收到警告:例如。

只需控制單擊UITextFieldDelegate字。

尋找@required下的方法,你必須始終實現。 @optional有默認實現,所以除非你想改變它不需要實現它們的行為。

暫無
暫無

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

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