美文网首页iOS开发
Swift与OC对比学习delegate代理

Swift与OC对比学习delegate代理

作者: Mr木子李 | 来源:发表于2017-06-17 16:42 被阅读1544次

OC中使用代理

委托方(子控制器)委托方需要实现创建协议 、声明协议方法

@protocol SubViewDelegate<NSObject>

- (void)replaceRealization;

@end

创建一个代理属性

 weak声明

@property (nonatomic, weak) id<SubViewDelegate> delegate;

执行协议方法

 判断代理是实现该方法,避免carsh

if ([self.delegate respondsToSelector:@selector(replaceRealization)]) {

[self.delegate replaceRealization;];

}

代理方(主控制器)代理方需要实现遵守(继承)协议?

@interface ViewController ()

将代理设为自己

subVC.delegate = self;

实现代理方法

- (void)replaceRealization{

NSLog(@"replaceTheMethod");

}

Swift3.0 中代理的使用方法    

委托方(子控制器)委托方需要实现创建协议 、声明协议方法

 1.子页面制定协议(不写NSObjectProtocol暂时不会报错,但是写属性是无法写weak)

protocol SubViewDelegate:NSObjectProtocol {

//设置协议方法

func replaceRealization();

}

//在Swift中,制定协议需要遵守NSObjectProtocol协议,除了类可以遵守协议,结构体也可以遵守协议

//在OC中我们制定协议,通常继承自NSObject,可以这样理解,所有继承自NSObject的对象都可以实现协议方法(同样我们也可以指定哪些对象可以实现我们制定的协议方法)

2.用weak定义代理

weak var delegate:SubViewDelegate?

3.判断代理是否存在,让代理去执行方法

//'?'代替了responsed

delegate?.replaceRealization()

二,在控制器界面

1.遵守协议

class ViewController:UIViewController,SubViewDelegate { //遵守协议

2.设置代理为self

subVC?.delegate = self

3.实现协议方法

func replaceRealization(){

print("replaceTheMethod")

}

相关文章

网友评论

    本文标题:Swift与OC对比学习delegate代理

    本文链接:https://www.haomeiwen.com/subject/xqtbqxtx.html