首页 > 其他 > 详细

iOS设计模式之自己设计与实现委托与协议

时间:2014-01-17 18:57:45      阅读:406      评论:0      收藏:0      [点我收藏+]

协议是一组方法的集合。 委托依赖协议来实现。一般为委托来提供服务的协议我们的命名规则都是 类名Delegate.其中类名实际隐含了表示了delegating的名字。也就是需要委托者帮组的类。比如UITableViewDelegate协议。我们往往使用系统给我们写好的委托和协议。其中自己手写实现一个委托并不困难。

比如一个控制器A需要其他控制器的帮助来实现对控制器A上的视图来配置。那么需要为控制器A代码实现如下。

bubuko.com,布布扣
#import <UIKit/UIkit.h>
1 @protocol ADelegate;
@interface A : UIViewController
2 @propety (weak, nonatomic) id<ADelegate> delegate;
@end

3 @protocol  ADelegate <NSObject>
- (void)helpMeConfigTheView :(id)UIViewController;
@end
bubuko.com,布布扣

 

添加下划线部分。其中1是一个前置声明。1的存在保证2不会编译错误。也就是保证2中的ADlegate能够被编译器识别。3就是协议声明。

这里我们可以注意一下几点。 委托变量的声明一般是id<委托协议名>  属性类型一般是weak。很显然weak表示这个delegating类不能有保证委托类的生存周期。这在现实中也有映射的。 就好像你的朋友何时挂与你无关。

3 是协议声明。一般协议都有继承NSObject协议。注意这里NSObject是协议名而不是类名。凡是用<>中的都是协议。这里也很好理解。这就好像一个书名号而已。协议就像我们现实生活中的协议书。

在实现文件中。

@implemtation A

.....

在ADelegate中的某个消息实现中。

self.delegate = bController ; (其中bController表示另外一个控制器对象)

[self.delegate helpMeConfigTheView:self];

@end

就可以完成做为delegating的所有代码。

 

delegate中不用多说

1. 在声明文件中

@interface B: UIViewController<ADelegate>

2.在实现文件中

- (void)helpMeConfigTheView :(id)UIViewController
{
.....
}

 

 

 

 

 

 

 

 

iOS设计模式之自己设计与实现委托与协议

原文:http://www.cnblogs.com/mix1009/p/3524187.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!