block使用總結(jié)

1.block使用步驟:

1>.有兩個控制器,主動傳值或者提供方法的控制器A,接受值的控制器B
2>.讓A控制器typedef void(^myBlock)(),然后copy一個myBlock類型的屬性:
@property(nonatomic ,copy) myBlock block;
3>.在B控制器中創(chuàng)建A控制器,然后調(diào)用A控制器的方法
4>.在A控制器方法中,記錄block:self.block = block;
5>.在合適的地方調(diào)用block:self.block(poiResultList.poiInfoList);
6>.調(diào)用以后block參數(shù)里邊已經(jīng)有值,這個時候在B控制器中調(diào)用A控制器的方法中參數(shù)block開始執(zhí)行,并且block中參數(shù)也已經(jīng)有值.

2.block原理篇:

1>.誰要傳值,誰聲明和定義block以及把block作為參數(shù)的方法
2>.傳值方記錄下來block,在合適的時候調(diào)用
3>.接受值方,調(diào)用方法,等傳值方調(diào)用block的時候才會在代碼塊中拿到block傳過來的參數(shù)值.

3.demo

#import"TSYBaiduTool.h"

   @interfaceTSYBaiduTool()
   @property(nonatomic,copy) Blockblock;
   /** poi檢索對象*/
   @property(nonatomic,strong)BMKPoiSearch*searcher;
  @end
  
  @implementationTSYBaiduTool
  single_implementation(TSYBaiduTool)
  - (void)getPoiWithCeneter:(CLLocationCoordinate2D)centerkey:(NSString*)key Result:(Block)block{
  //記錄block self.block=block; 
 //初始化檢索對象 _searcher=[[BMKPoiSearch alloc] init]; 
  _searcher.delegate=self;  
 //發(fā)起檢索
  BMKNearbySearchOption*option = [[BMKNearbySearchOption alloc] init]; 
  option.pageIndex=0;   option.pageCapacity=20; option.location= center; option.keyword= key; 
  BOOLflag = [_searcherpoiSearchNearBy:option]; 
  if(flag){NSLog(@"周邊檢索發(fā)送成功");}else
  {NSLog(@"周邊檢索發(fā)送失敗");}  

#import"TSYBaiduTool.h"

   @interfaceTSYBaiduTool()
   @end
   @implementationTSYBaiduTool
   - (void)addAnnotationCenter:(CLLocationCoordinate2D)centertitle:(NSString*)title subTitle:(NSString*)subTile toMapView:(BMKMapView*)mapView{
   //添加一個PointAnnotation 
   BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc] init];
   annotation.coordinate= center; 
   annotation.title= title; 
   annotation.subtitle= subTile; 
   [mapViewaddAnnotation:annotation];  }

#import"TSYBaiduTool.h"

   @interfaceTSYBaiduTool()
   @end
   @implementationTSYBaiduTool
   #pragmamark - BMKPoiSearchDelegate  
   //實(shí)現(xiàn)PoiSearchDeleage處理回調(diào)結(jié)果 
    -(void)onGetPoiResult:(BMKPoiSearch*)searcherresult:(BMKPoiResult*)poiResultListerrorCode:(BMKSearchErrorCode)error{ 
    if(error ==BMK_SEARCH_NO_ERROR) {
      //在此處理正常結(jié)果    
    self.block(poiResultList.poiInfoList);
    } else if(error ==BMK_SEARCH_AMBIGUOUS_KEYWORD){
     //當(dāng)在設(shè)置城市未找到結(jié)果都毒,但在其他城市找到結(jié)果時圈浇,回調(diào)建議檢索城市列表 
      //result.cityList;  NSLog(@"起始點(diǎn)有歧義");  }else{ 
       NSLog(@"抱歉旋恼,未找到結(jié)果--%zd", error);} 
     }
   @end

#import"Singleton.h"

   #import typedef void(^Block) (NSArray*result);
   @interfaceTSYBaiduTool :NSObject
   single_interface(TSYBaiduTool)
   -(void)getPoiWithCeneter:(CLLocationCoordinate2D)centerkey:(NSString*)key Result:(Block)block;
   -(void)addAnnotationCenter:(CLLocationCoordinate2D)centertitle:(NSString*)title subTitle:(NSString*)subTile toMapView:(BMKMapView*)mapView;
    @end

#import"ViewController.h"

  #import"TSYBaiduTool.h"
  @interfaceViewController()
  @property(weak,nonatomic) IBOutlet BMKMapView*mapView;
  @end

 @implementationViewController
 - (void)viewDidLoad {
 [super viewDidLoad];
 self.mapView.delegate=self;
 }
 #pragmark - BMKMapViewDelegate
 /**
*長按地圖時調(diào)用
*  @param mapView    地圖
*  @param coordinate點(diǎn)對應(yīng)的經(jīng)緯度
*/
 -(void)mapview:(BMKMapView*)mapView onLongClick:(CLLocationCoordinate2D)coordinate{
//調(diào)整地圖顯示區(qū)域
 BMKCoordinateSpanspan = BMKCoordinateSpanMake(0.075418,0.051922);
 BMKCoordinateRegionregion = BMKCoordinateRegionMake(coordinate, span);
  [mapViewsetRegion:regionanimated:YES];
  //poi檢索
   [[TSYBaiduToolsharedTSYBaiduTool]getPoiWithCeneter:coordinatekey:@"小吃"Result:^(NSArray *result) {     
 [resultenumerateObjectsUsingBlock:^(BMKPoiInfo*_Nonnullobj,NSUIntegeridx,BOOL*_Nonnullstop) {
//添加大頭針
   [[TSYBaiduToolsharedTSYBaiduTool]addAnnotationCenter:obj.pttitle:obj.namesubTitle:obj.addresstoMapView:self.mapView];
}];
}];
}
@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丛版,一起剝皮案震驚了整個濱河市恢总,隨后出現(xiàn)的幾起案子愈涩,更是在濱河造成了極大的恐慌栽渴,老刑警劉巖芥备,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡冯勉,警方通過查閱死者的電腦和手機(jī)澈蚌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灼狰,“玉大人宛瞄,你說我怎么就攤上這事〗慌撸” “怎么了份汗?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蝴簇。 經(jīng)常有香客問我杯活,道長,這世上最難降的妖魔是什么熬词? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任轩猩,我火速辦了婚禮,結(jié)果婚禮上荡澎,老公的妹妹穿的比我還像新娘均践。我一直安慰自己,他們只是感情好摩幔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布彤委。 她就那樣靜靜地躺著,像睡著了一般或衡。 火紅的嫁衣襯著肌膚如雪焦影。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天封断,我揣著相機(jī)與錄音斯辰,去河邊找鬼。 笑死坡疼,一個胖子當(dāng)著我的面吹牛彬呻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柄瑰,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼闸氮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了教沾?” 一聲冷哼從身側(cè)響起蒲跨,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎授翻,沒想到半個月后或悲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孙咪,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年巡语,在試婚紗的時候發(fā)現(xiàn)自己被綠了翎蹈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡捌臊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兜材,到底是詐尸還是另有隱情理澎,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布曙寡,位于F島的核電站糠爬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏举庶。R本人自食惡果不足惜执隧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望户侥。 院中可真熱鬧镀琉,春花似錦、人聲如沸蕊唐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽替梨。三九已至钓试,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間副瀑,已是汗流浹背弓熏。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糠睡,地道東北人挽鞠。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像狈孔,于是被迫代替她去往敵國和親滞谢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理除抛,服務(wù)發(fā)現(xiàn)狮杨,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • Block使用場景到忽,可以在兩個界面的傳值橄教,也可以對代碼封裝作為參數(shù)的傳遞等清寇。用過GCD就知道Block的精妙之處。...
    Coder_JMicheal閱讀 724評論 2 1
  • void (^mutiplayBlock)(NSString *) = ^(NSString *str) {NSL...
    WHZ鬧哪樣閱讀 690評論 0 1
  • iOS代碼塊Block 概述 代碼塊Block是蘋果在iOS4開始引入的對C語言的擴(kuò)展,用來實(shí)現(xiàn)匿名函數(shù)的特性,B...
    smile刺客閱讀 2,349評論 2 26
  • 前言 Blocks是C語言的擴(kuò)充功能护蝶,而Apple 在OS X Snow Leopard 和 iOS 4中引入了這...
    小人不才閱讀 3,768評論 0 23