Objective-C學(xué)習(xí)之路 委托用法與講解
Objective-C學(xué)習(xí)之路 委托用法與講解,是本文要介紹的內(nèi)容,當(dāng)然在學(xué)習(xí)委托之前,你也許對Objective-C已經(jīng)很是了解了,那么我們直接看內(nèi)容。
(1)雇主與委托者共同參與一個(gè)處理,說白了就是調(diào)用雇主方法的時(shí)候在雇主的方法內(nèi)不但有相應(yīng)的邏輯處理,還得請求委托者的方法共同處理
(2)請求委托者的方法時(shí)要將自己傳遞過去,也就是說把自己當(dāng)作一個(gè)入?yún)鬟f過去,當(dāng)然也可以有不同的實(shí)現(xiàn),只是委托者能獲得雇主就可以
- #import <Cocoa/Cocoa.h>
- /**
- *委托的Demo
- *
- *@author 肖浩
- **/
- //委托類,委托類沒有任何方法聲明,它只需實(shí)現(xiàn)非正規(guī)協(xié)議的中需要的方法
- @interface DemoDelegate : NSObject
- @end //DemoDelegate
- //雇主類
- @interface Demo : NSObject {
- //委托類
- DemoDelegate *demoDelegate;
- }
- -(void) setDemoDelegate : (DemoDelegate *) delegate;
- -(void) sendMessage;
- @end //Demo
- //NSObject的WSDelegate類別,定義非正規(guī)協(xié)議
- @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;
- }
- //通知委托類方法執(zhí)行
- -(void) sendMessage {
- [demoDelegate handlerDelegate : self];
- }
- -(void) dealloc {
- [demoDelegate release];
- [super dealloc];
- }
- @end //Demo
- @implementation DemoDelegate
- //相應(yīng)的委托方法
- -(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);
- }
當(dāng)然,上面的代碼注釋沒有寫的特別詳細(xì),因?yàn)橄嘈湃绻阍趯W(xué)習(xí)Objective-C的委托,那么你一定掌握了Objective-C的基本知識,上面的代碼是很簡單的,你肯定可以看的懂,這些都是我綜合資料之后總結(jié)的概念,如果哪里有不對的地方還希望和大家多交流,希望對大家有幫助.
小結(jié):Objective-C學(xué)習(xí)之路 委托用法與講解的內(nèi)容介紹完了希望本文對你有所幫助。