iOS 之 block
2015-08-03 01:02
375 查看
今天无聊,又去mark了一下block,就当是复习了。。。
好吧,随便写点东西,好吧,首先block的定义:
上面的很容易理解,就像标准C的函数一样:首先定义一个block,然后实现它的方法体,最后调用;
(不一样的是block可以在函数内部实现方法体)
然后呢就是block当做函数参数传递了:
上面只是普通的block调用,而block最方便的时内联调用,上面的代码可以改成:
好吧这就是block闭包的优势之一了;
至于__block 关键字,就是为了block能够修改block外部的局部变量,至于堆栈block这里不讲
block 传值好吧,其实上面的代码已经讲了,就是作为属性传递过去,block传值可以理解为函数的回调的回调;
就这么多了,以后在补充。。。
好吧,随便写点东西,好吧,首先block的定义:
int (^block)(int num); //定义 block block = ^(int num){ //block 方法体 return num+1; }; block(1); //调用block
上面的很容易理解,就像标准C的函数一样:首先定义一个block,然后实现它的方法体,最后调用;
(不一样的是block可以在函数内部实现方法体)
然后呢就是block当做函数参数传递了:
typedef NSString* (^IntToString)(NSInteger paramInteger);//定义一个block类型,方便读 @property (nonatomic ,copy) IntToString blockToString; //定义成属性,主要是方便类之间block传值 - (void)print{ _blockToString = ^(NSInteger paramInteger){ NSString *result = [NSString stringWithFormat:@"%ld", (long)paramInteger]; return result; }; NSString *result = [self convertIntToString:123 usingBlockObject:_blockToString]; NSLog(@"result = %@", result); } - (NSString *)convertIntToString:(NSUInteger)paramInteger usingBlockObject:(IntToString)paramBlockObject{ return paramBlockObject(paramInteger); }
上面只是普通的block调用,而block最方便的时内联调用,上面的代码可以改成:
- (void)print{ // _blockToString = ^(NSInteger paramInteger){ // NSString *result = [NSString stringWithFormat:@"%ld", (long)paramInteger]; // return result; // }; NSString *result = [self convertIntToString:123 usingBlockObject:^(NSInteger paramInteger){//内联调用,是不是易读性更高呢 NSString *result = [NSString stringWithFormat:@"%ld", (long)paramInteger]; return result; }]; NSLog(@"result = %@", result); } - (NSString *)convertIntToString:(NSUInteger)paramInteger usingBlockObject:(IntToString)paramBlockObject{ return paramBlockObject(paramInteger); }
好吧这就是block闭包的优势之一了;
至于__block 关键字,就是为了block能够修改block外部的局部变量,至于堆栈block这里不讲
block 传值好吧,其实上面的代码已经讲了,就是作为属性传递过去,block传值可以理解为函数的回调的回调;
就这么多了,以后在补充。。。
相关文章推荐
- iOS集成ShareSKD第三方登录
- OC_NSArray和NSMutableArray
- ios CAAnimation动画结束后会闪烁一下
- iOS地图----MapKit框架
- (转载)iOS开发中断言的使用—NSAssert()
- ios开发中的小技巧
- IOS使用navigationController跳转到下一页面黑屏问题。
- iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
- IOS开发初学--XCODE篇
- iOS多线程编程之NSThread的使用
- IOS之pageControl
- iOS设计模式-模板方法
- iOS静态库与Workspace在项目中的使用
- iOS咱们一起学吧
- IOS NavigationBar 背景色
- iOS:KVO的概述与使用
- iOS定位--CoreLocation框架
- iOS 中数据持久化方案
- IOS开发入门之工程创建
- IOS 整体框架类图值得收藏