IOS 学习笔记--关于对Block的理解

Block和函数指针很像

比如这两句

1、

       [geocoder reverseGeocodeLocation:newLocation

                       completionHandler:^(NSArray *placemarks, NSError *error){

                           

                           for (CLPlacemark *place in placemarks) {

                               NSLog(@"name,%@",place.name);                       // 位置名

                               NSLog(@"thoroughfare,%@",place.thoroughfare);       // 街道

                               NSLog(@"subThoroughfare,%@",place.subThoroughfare); // 子街道

                               NSLog(@"locality,%@",place.locality);               // 市

                               NSLog(@"subLocality,%@",place.subLocality);         // 区

                               NSLog(@"country,%@",place.country);                 // 国家

                           }

                           

                       }];

 2、(void)^block(NSArray*,NSError*) = ^(NSArray *placemarks, NSError *error){

                           

                           for (CLPlacemark *place in placemarks) {

                               NSLog(@"name,%@",place.name);                       // 位置名

                               NSLog(@"thoroughfare,%@",place.thoroughfare);       // 街道

                               NSLog(@"subThoroughfare,%@",place.subThoroughfare); // 子街道

                               NSLog(@"locality,%@",place.locality);               // 市

                               NSLog(@"subLocality,%@",place.subLocality);         // 区

                               NSLog(@"country,%@",place.country);                 // 国家

                           }

};

[geocoder reverseGeocodeLocation:newLocation

                       completionHandler:block];

是等价的,编译的时候并不会运行block里的代码,只是会在

[geocoder reverseGeocodeLocation:newLocation

                       completionHandler:block];这个的时候传入block的指针。而真正的是否运行或者什么时候运行取决于reverseGeocodeLocation:

completionHandler:方法里什么时候调用改block快。

block于普通函数指针的区别是可以把block定义在函数的内部,和一些字段的共享。使用block快推荐使用第一种模式,因为第一种模式比较直观。代码不用到处找,而第二种则比较清晰,易于理解。

 

 

转载于:https://www.cnblogs.com/wusi112bolg/archive/2013/03/07/2947876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值