2014-02-07 42 views
0

我有三個不同的類,其中一個是從某個網站解析xml,另外兩個將從運行NSXMLParserDelegate協議方法的類接收信息。我的問題是,我如何告訴該類從另一個類運行協議方法?或者運行每個實例方法或整個類或類似的東西。從另一個類運行協議方法 - Objective-C

有什麼建議嗎?

編輯:當某些視圖處於活動狀態時,我將從網站解析xml信息。爲了做到這一點,我將有一個我將要發送消息的類,並告訴它從xml解析器協議運行它的方法,並將它接收到的值發送給當前的視圖。

+0

所以這兩個其他類將*雙向*是第一的委託?對我來說聽起來不合適。 – trojanfoe

+1

我想你錯過了一些關於協議和委託的基本理解。你能解釋一下你想做什麼嗎? – Merlevede

+0

好的,有沒有其他方法可以獲得這個呢? –

回答

2

有兩種查看方法。

具有指向委託(B)的指針(委託是實現協議方法的對象)的對象(A)可以通過調用它們來調用協議的方法。 構造委託的(B)的觀點,你不要調用協議的方法,你執行它們,而其他對象(A)會在它需要通知你一些事件或請求一些信息時調用它們。這就是協議的設計目的。

對象(A)的地方委員會宣佈,委託

id <someKindOfDelegate> delegate; 

,每當它想要的,它會調用協議的方法

if (self.delegate) 
    [self.delegate someMethod] 

(B)必須聲明自己作爲協議

的實施者
@interface ObjectB <someKindOfDelegate> 

然後(B)將自己設置爲(A)的實例的代表

ObjectA *object = [[ObjectA alloc] init]; 
object.delegate = self; 

最後(B)實現協議的方法

- (void)someMethod { 
    // do something... I've been called! 
}