2012-02-23 91 views
-2

像XML解析樣本代碼,我遇到了一個評論:代表的設置是什麼意思?

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 

//Initialize the delegate. 
XMLParser *parser = [[XMLParser alloc] initXMLParser]; 

//Set delegate 
[xmlParser setDelegate:parser]; 

有人可以告訴我在通用協議的委託方法與委託的區別?

+2

代表只是另一個能夠完成工作的課程。 – LuckyLuke 2012-02-23 14:12:24

+0

您可能對[此問題]感興趣(http://stackoverflow.com/q/4449382/141081) – Dirk 2012-02-23 14:16:45

+0

不太明白這個問題......它使用的是委派模式...經常使用iOS開發中的模式。 「協議的委託方法」是什麼意思? – Yoeri 2012-02-23 14:17:13

回答

2

協議是等的接口。如果你來自JAVA或C#,你已經看到了這一點。這只是一個沒有實現的方法列表。一個類可以(或不)符合特定的協議。一個類必須實現標記爲必需的方法。那些是可選的無法實施。

而是,委派是一種模式,它創建兩個不同對象之間的關係。其中一個A說得到第二個B的幫助。換言之,B爲A做些事情。

兩者之間的關係是委託方法(對於特定的類)在協議中列出。這裏是委託協議。

爲什麼代表團很重要?在你的應用程序生命週期的某個時刻,如果一個類向它的委託發送消息(這不是零),並且它實現了一個特定的方法(它可以響應那個選擇器),它的代表就會收到它的消息。此時,控制由執行一些計算的代表捕獲,也許可以返回一些結果。

希望它有幫助。

+0

是啊,它幫助了很多朋友..謝謝。 – 2012-02-23 15:43:11

1

委託的想法就像是當你有一些操作發生,當它做了什麼,或需要通知另一個對象進行操作或從它獲取數據詢問委託。例如: 表視圖,它需要從數據源中獲取列表,並告訴某人何時選擇了一個對象,即設置數據源和委託的位置,tableview將調用該方法。在相應的協議中定義。 (比如聊到這個代表當u需要的是協議中的東西)

我希望這種非正式的解釋可以幫助你

對委託的更多(適當的)信息查詢:http://en.wikipedia.org/wiki/Delegation_pattern

1

一般情況下,它的IS 「做這份工作」的對象。

在NSXMLParser的情況下,當您創建解析器時,將對象設置爲其委託,這意味着此對象需要實現NSXMLParsedDelegate方法。

例如:

- (void) parseData:(NSData*) xmlResponse; 

- (void)parserDidStartDocument:(NSXMLParser *)parser; 

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError; 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict; 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName; 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string; 

- (void)parserDidEndDocument:(NSXMLParser *)parser; 
+0

感謝Dude..got在NSXMLParsing的情況下.. – 2012-02-23 14:33:47