block、delegate、notification使用

block、delegate

1.delegate 运行成本低 block 运行成本高

2.delegate 更安全、不会出现循环引用 可以支持多个方法 但回调返回参数限制于ns类

3.block 系统再带动画 可读性高,只要实现就可以了不用设置代理、实现方法

4.block 本质就是个对象 能当做属性、成员变量传递 afnetworking、gcd都用block

 

一、block 使用

1.定义 typedef void(^resultBlock)(BOOL success);

返回值 无,block名 resultBlock,参数 success

使用

+(void)saveImageToSandbox:(UIImage *)image

andImageNage:(NSString *)imageName

andResultBlock:(resultBlock)block;

#pragma mark----将照片保存到沙盒

+(void)saveImageToSandbox:(UIImage *)image andImageNage:(NSString *)imageName andResultBlock:(resultBlock)block

{

//高保真压缩图片,此方法可将图片压缩,但是图片质量基本不变,第二个参数为质量参数

NSData *imageData=UIImageJPEGRepresentation(image, 0.5);

//将图片写入文件

NSString *filePath=[self filePath:imageName];

//是否保存成功

BOOL result=[imageData writeToFile:filePath atomically:YES];

//保存成功传值到blcok中

if (result) {

block(result);

}

}

//保存到沙盒中

[SZKImagePickerVC saveImageToSandbox:image andImageNage:imageName andResultBlock:^(BOOL success) {

NSLog(@"保存成功");

}];

2.定义

typedef void(^selectPrcvinceBlock)(CCarNumTableViewCell *);

使用

@property (nonatomic,copy) selectPrcvinceBlock selectPrcvinceBlock;

- (IBAction)selectProvince:(id)sender {

if (self.selectPrcvinceBlock) {

self.selectPrcvinceBlock(self);

}

}

 

二、delegate 代理

定义

@protocol BackMessageViewDelegate <NSObject>

- (void)clickSaveBtn;

- (void)clickCancleBtn;

@end

使用

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


- (IBAction)clickSaveBtn:(id)sender {

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

[self.delegate clickSaveBtn];

}

}

 

三、notification通知

举例:监听键盘显示、隐藏 移动View的frame使用

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值