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的基本知识, 上面的代码是很简单的,你肯定可以看的懂,这些都是我综合资料之后总结的概念,如果哪里有不对的地方还希望和大家多交流,希望对大家有帮助.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值