9.在项目中利用block替换代理方法,实现通知
来源:互联网 发布:光子嫩肤永久有效知乎 编辑:程序博客网 时间:2024/05/21 11:33
利用代理方法的缺点:
通常我们在自定义工具类或视图类中进行一些操作之后需要通知视图控制器,我们都会通过代理来实现。一般实现方法是先定义协议,然后声明代理属性,然后在对应方法中调用代理对象的该方法。然后到视图控制器中,声明遵守协议 ,设置该类对应的对象的代理为视图控制器,然后实现对应协议中代理方法。这样就能完成通知视图控制器。但是这样做步骤太多,比较麻烦。接下来介绍一个利用block来完成通知的方法。
使用block:
首先在自定义类中声明一个block类型的属性,然后将需要传出的参数设为block的参数,下面通过具体实例来进行说明:
@interface CYLView : UIView@property (nonatomic, copy) void (^CYLViewBlock)(UIButton *btn);@end首先自定义一个视图类,该类拥有一个block属性。该类用xib描述view,上面有一个按钮,要实现点击按钮时通知视图控制器打印出点击的按钮。
该类的实现文件如下图所示:
@implementation CYLView- (IBAction)btnClick:(UIButton *)sender{ if (self.CYLViewBlock) self.CYLViewBlock(sender);}@end在点击按钮时,判断block属性是否有值,有的话就执行该段block
视图控制器中的代码如下:
@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; CYLView *view = [[[NSBundle mainBundle]loadNibNamed:@"CYLView" owner:nil options:nil]lastObject]; view.frame = CGRectMake(0, 100, 300, 300); view.CYLViewBlock = ^(UIButton *btn){ NSLog(@"%@",btn); }; [self.view addSubview:view]; }@end
将按钮点击后要传入的代码放入block即可。注意这段block中使用self时要声明为弱引用,否则会造成循环引用。具体请参照第8篇日志。
这样即可实现通知。
0 0
- 9.在项目中利用block替换代理方法,实现通知
- 回传实现 代理 通知 block
- iOS中 block 代理 通知的区别
- iOS中代理、通知、block的使用
- 在Java中利用cglib实现代理
- iOS - block、代理、通知
- KVO、BLOCK、代理、通知
- 代理 通知 和block
- 用block替换代理
- 代理,block,通知,对于数据回传的不同方法
- KVO&代理&block&通知中心
- 代理、通知、block的区别
- 三种传值(Block、代理协议、通知)
- ios 代理、block和通知
- 利用动态代理+注解 实现子线程中执行方法
- 项目中如何利用通知中心
- objc利用block实现链式编程方法
- objc利用block实现链式编程方法
- 参数传递的四种形式----- URL,超链接,js,form表单
- GYM 100685 J【交互题】
- 短语out of the blue
- OutputStreamWriter,InputStreamReader,PrintWriter,BufferedReader
- Nouveau源码分析(七): 各SUBDEV/ENGINE初始化 (1)
- 9.在项目中利用block替换代理方法,实现通知
- POJ 3268 Silver Cow Party
- TCP FIN_WAIT_2状态问题分析
- 第8章 编程模式与设计模式
- Android问题集(一)——从fragment跳转到另一个Activity
- 你在过度测试你的软件吗?
- solr query
- Nouveau源码分析(零)
- web.xml中的url-pattern映射规则