Objective-C學習之路 委託用法與講解,是本文要介紹的內容,當然在學習委託之前,你也許對Objective-C已經很是瞭解了,那麼我們直接看內容。
1)僱主與委託者共同參與一個處理,說白了就是調用僱主方法的時候在僱主的方法內不但有相應的邏輯處理,還得請求委託者的方法共同處理
2)請求委託者的方法時要將自己傳遞過去,也就是說把自己當作一個入參傳遞過去,當然也可以有不同的實現,只是委託者能獲得僱主就可以
- #import <Cocoa/Cocoa.h>
- /**
- *委託的Demo
- *
- *@author 肖浩
- **/
- //委託類,委託類沒有任何方法聲明,它只需實現非正規協議的中需要的方法
- @interface DemoDelegate : NSObject
- @end //DemoDelegate
-
- //僱主類
- @interface Demo : NSObject {
-
- //委託類
- DemoDelegate *demoDelegate;
-
- }
-
- -(void) setDemoDelegate : (DemoDelegate *) delegate;
-
- -(void) sendMessage;
-
- @end //Demo
-
- //NSObject的WSDelegate類別,定義非正規協議
-
- @interface NSObject (WSDelegate)
-
- -(void) setDemoDelegate : (DemoDelegate *) delegate;
- -(void) handlerDelegate : (Demo *) demo;
- @end //WSDelegate
- @implementation Demo
- -(void) setDemoDelegate : (DemoDelegate *) delegate {
- [delegate retain];
- [demoDelegate release];
- demoDelegate = delegate;
- }
- //通知委託類方法執行
- -(void) sendMessage {
- [demoDelegate handlerDelegate : self];
- }
- -(void) dealloc {
- [demoDelegate release];
- [super dealloc];
- }
- @end //Demo
- @implementation DemoDelegate
- //相應的委託方法
- -(void) handlerDelegate : (Demo *) demo {
- NSLog(@"%@", demo);
- }
- @end //DemoDelegate
- int main (int argc, char *argv[]) {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- Demo *demo = [[Demo alloc] init];
- DemoDelegate *delegate = [[DemoDelegate alloc] init];
- [demo setDemoDelegate : delegate];
- [demo sendMessage];
- [pool release];
- return (0);
- }
當然,上面的代碼注釋沒有寫的特別詳細,因為相信如果你在學習Objective-C的委託,那麼你一定掌握了Objective-C的基本知識,上面的代碼是很簡單的,你肯定可以看的懂,這些都是我綜合資料之後總結的概念,如果哪裡有不對的地方還希望和大家多交流,希望對大家有協助.
小結:Objective-C學習之路 委託用法與講解的內容介紹完了希望本文對你有所協助。