iOS开发- 关于Block的几种应用
来源:互联网 发布:linux增加局域网ip段 编辑:程序博客网 时间:2024/06/10 00:46
关于Block,博主不才,简单分为三种来用:
- 像函数一样定义和使用,,不同于函数的是可以定义在方法内也可以定义在方法外
- 定义成property的属性来使用
- 用作修饰词
接下来一样样的来展示;
1.像函数一样定义和使用,,不同于函数的是可以定义在方法内也可以定义在方法外
1)在方法中使用
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSString *(^thisBlock) (NSString *thisName) = ^(NSString *name){ return [NSString stringWithFormat:@"%@:%@",@"name",name]; }; NSLog(@"%@",thisBlock(@"xiaoming"));}
2)在方法外使用,就像定义一个方法一样
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. BlockVoid(24);}void (^BlockVoid) (int age) = ^(int xiaomingAge){ NSLog(@"xiaomingAge:%d",xiaomingAge);};
总结: 上面俩block也是block的一种写法不过这么用的貌似不多见,大多时候这么写反而显得麻烦了(从这里可以看出,block可以定义在方法内部也可以定义在方法外部,在外部的时候看着是不是更像函数了)
2.定义成property的属性来使用
这是一种我们经常用的方法,举个例子
/** 常规无返回值有参数block,比较常用 */@property(nonatomic,copy)void (^myBlock) (NSString *name,int age);/** 常规有返回值有参数block,使用起来其实和上面那个差别不大 */@property(nonatomic,copy)NSString *(^haveReturnBlock) (NSString *name);//用法- (void)test2{ _myBlock(@"CodeLiu",24);}- (NSString *)test3{ return _haveReturnBlock(@"小花");}
除了这个用法,还有一种很好玩的用法,看着比较生动,其实是一样的:
#import <Foundation/Foundation.h>/** 定义一个block @param returnContent 返回值 */typedef void(^RetureContentBlock)(id returnContent);@interface LHBlockForUse : NSObject/** 用定义的block来声明一个变量 */@property(nonatomic,copy)RetureContentBlock returnBlock;@end//用法- (void)test1{ _returnBlock(@"You can put every type in here");}
3.用作修饰词
在Block内是不能修改Block外的变量的,如果要修改就需要用__block进行修饰
__block int lastAge = 24; void (^lastAgeBlock) (int age) = ^(int addAge){ lastAge = lastAge + addAge; NSLog(@"xiaomingLastAge:%d",lastAge); };lastAgeBlock(1);
以上是Block的简单应用,如果哪里写的不好欢迎指正,下载地址:Block 的简单使用
1 0
- iOS开发- 关于Block的几种应用
- ios开发关于block
- 关于block的应用
- IOS开发之block应用
- iOS开发之BLOCK应用
- iOS开发--异步在主线程中执行block的几种方法总结
- iOS 开发中关于弹窗的几种方式
- iOS开发, 关于nslog的几种用法
- 【iOS开发】 UISegmentedControl 几种手势应用
- Block如何在ios开发中应用
- iOS开发block的学习
- iOS开发--Block的使用
- 关于iOS应用开发
- Ios开发之block在ios开发中的应用
- iOS开发-block详解
- ios应用审核的几种状态
- ios学习笔记之block在ios开发中的应用
- ios学习笔记之block在ios开发中的应用
- iOS开发笔记14:微博/微信登录与分享、微信/支付宝支付
- SVD分解及其应用
- C/C++常用头文件及函数汇总
- Copy List with Random Pointer -- LeetCode
- 陈皓:什么是工程师文化?
- iOS开发- 关于Block的几种应用
- 多个div彼此包含时,小的div内容过多,会出现大的content_div装不下小的item_div,请问此时怎么装下呢?
- C# socket主动给指定客户端发送数据的方法
- TextView属性大全
- 解决android6.0系统无法读写SD的问题
- hdu5886Tower Defence(树形dp)
- OC中一般正则表达式的使用
- Python爬虫__爬取贴吧图片和文本
- 用QMatrix实现帧的旋转、翻转、放大、缩小等简单操作示例