您的位置:首页 > 其它

代理的使用及其实现原理

2015-08-12 12:20 253 查看
代理是是什么?

代理可以提高代码的复用性

代理的作用:

1、封装变化点

2、解决类与类之间的强耦合性

3.、可以在类之间进行数据传递

什么情况下使用代理?

有一系列的变化点(比如我们所用的空间UIScrollView 有许多方法,苹果对其进行了封装,给用户提供了接口,用户只需遵守协议,然后实现协议方法即可)

能够让用户清晰的了解到哪些变化方法被封装起来了

实现代理需要以下的几个步骤:

定义协议方法

这里实现的是登录界面的封装,使用了代理的方法

声明协议

@protocol LoginViewDelegate <NSObject>

定义协议方法
-(void)loginViewLoginButtonToch:(LoginView *)loginView andName:(NSString
*)name andPwd:(NSString *)pwd;

创建属性 :

@property(nonatomic,assign)id<LoginViewDelegate>delegate;

id 是任意的返回值类型 这里的范围比较大,提高了代码可用性

在点击事件中调用协议的方法

//或得用户名和密码

NSString *name = self.usrName.text;

NSString *pwd = self.pwd.text;

[_delegate
loginViewLoginButtonToch:self
andName:name andPwd:pwd];

我们提供给用户一个接口 如果要在另外一个试图控制器中调用

1.引入头文件

#import "LoginView.h"
2.遵守协议

@interface
ViewController ()<LoginViewDelegate>

之后需要三步:
//1.创建一个Login
视图

LoginView *loginView = [LoginView loginView];

//2.建立视图之间的父子关系

[self.view addSubview:loginView];

//3.设置代理对象

loginView.delegate = self;

最后一步对协议方法进行调用

#pragma mark LoginViewDelegate 方法
-(void)loginViewLoginButtonToch:(LoginView *)loginView andName:(NSString
*)name andPwd:(NSString *)pwd
{

NSLog(@"%@",NSStringFromSelector(_cmd));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: