ios block詳解

什么是typedef?

typedef就是一種替換,與宏不同的是它還可以進(jìn)行對(duì)象的聲明。

typedef為C語(yǔ)言的關(guān)鍵字,作用是為一種數(shù)據(jù)類型定義一個(gè)新名字。這里的數(shù)據(jù)類型包括內(nèi)部數(shù)據(jù)類型(int,char等)和自定義的數(shù)據(jù)類型(struct等)。

例如:

typedef int NSInteger;

表示對(duì)NSInteger進(jìn)行了一個(gè)別名的設(shè)置,其表示的就是long或者int類型。

char* pa, pb; // 這多數(shù)不符合我們的意圖,它只聲明了一個(gè)指向字符變量的指針,和一個(gè)字符變量;

即* pa 和 pb,pb是沒有* 的

// 以下則可行:

typedef char* PCHAR;

PCHAR pa, pb;則是兩個(gè)指針。

使用typedef來定義一個(gè)block

1.typedef void(^AAABlock)(NSString *string);

2.typedef int(^BBBBlock)(NSString *string);

3.typedef int(^CCCBlock)(void);

1是我們定義了一個(gè)名為AAABlock的block,它的返回值是void,接受參數(shù)為NSString類型的string。

2是我們定義了一個(gè)名為BBBBlock的block,它的返回值是int,接受參數(shù)為NSString類型的string。

3是我們定義了一個(gè)名為CCCBlock的block,它的返回值是int,沒有參數(shù)。

以此類推。

這里主要講一下如何在具體方法中實(shí)現(xiàn)block回調(diào)


我們以AFNetworking封裝為例子。

首先定義兩個(gè)回調(diào)處理的block:

typedef void(^SuccessBlock)(id responseBody);

typedef void(^FailureBlock)(NSString *error);

此時(shí)我們定義一個(gè)方法,參數(shù)中加入block:

-(void)postDataToServer:(NSMutableDictionary*)parameters url:(NSString*)url successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{

可以看到上面的方法中,方法中都帶上了block參數(shù)。

接著方法的編寫:

-(void)postDataToServer:(NSMutableDictionary*)parameters url:(NSString*)url successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{

[manager POST:urlStr parameters:parameters success:^(AFHTTPRequestOperation*operation,id responseObject){

successBlock(responseObject);

}failure:^(AFHTTPRequestOperation*operation,NSError*error){

}];

}

此時(shí)完成方法的編寫。

然后我們來調(diào)用這個(gè)方法:

[[NetworkSingleton sharedManager] postDataToServer:postDict url:[NSString stringWithFormat:@""] successBlock:^(id responseBody) {

//業(yè)務(wù)代碼

}failureBlock:^(NSString*error) {

//業(yè)務(wù)代碼

}];

這樣,一個(gè)block具體使用就完成了。

感謝指教。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、block簡(jiǎn)介 block字面意思就是代碼塊 iOS4.0 Apple引入的特性 block是Objectiv...
    呆子四二閱讀 1,673評(píng)論 1 6
  • 1、概述 閉包 = 一個(gè)函數(shù)「或指向函數(shù)的指針」+ 該函數(shù)執(zhí)行的外部的上下文變量「也就是自由變量」;Block 是...
    DeerRun閱讀 740評(píng)論 0 0
  • 一、概述 閉包 = 一個(gè)函數(shù)「或指向函數(shù)的指針」+ 該函數(shù)執(zhí)行的外部的上下文變量「也就是自由變量」;Block 是...
    簡(jiǎn)單_6509閱讀 1,593評(píng)論 0 1
  • 轉(zhuǎn)自李峰峰博客 一、概述 閉包 = 一個(gè)函數(shù)「或指向函數(shù)的指針」+ 該函數(shù)執(zhí)行的外部的上下文變量「也就是自由變量」...
    Joshua520閱讀 1,105評(píng)論 0 0
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,618評(píng)論 30 472

友情鏈接更多精彩內(nèi)容