-、block 解決兩個界面之間的傳值置吓,常應用在網(wǎng)絡請求中无虚,請求成功與否返回響應的數(shù)據(jù)。
現(xiàn)在基于BaicViewController來記錄下block的申明創(chuàng)建調用衍锚。
BaicViewController類的.h文件中
1,定義一個block:
typedef void(^myBlok)(id obj);
2,緊接著定義一個屬性友题。
@property (nonatomic,copy) myBlok dataBlock;
3,然后再定義一個實列方法:
- (void)imagePostWithImageCallBlock:(void(^)(id obj))comParam;
BaicViewController類的.m文件中
1,實現(xiàn)實列方法
在實現(xiàn)方法中戴质,一定要指定 self.dataBlock = comParam度宦,將block指向comparam。
2告匠,當要返回數(shù)據(jù)的時候就用:
self.dataBlock(A);
A 可以是類戈抄,數(shù)組,字典等后专。
定義已經(jīng)完成划鸽,接下來是如何調用:
在其他類中申明一個BaicViewController的對象,然后直接調用該對象的block的實列方法即可戚哎,然后就會在該方法的block塊中得到你想要的數(shù)據(jù)了裸诽。
二、如何創(chuàng)建一個能在一個方法里成功和失敗不同處理結果的block型凳,步驟和上面的大致相似丈冬。
BaicViewController類的.h文件中
1,定義兩個block,一個對應成功時的甘畅,一個對應失敗時的:
typedef void (^successBlock)(UIImage * imageObj);
typedef void (^failBlock)(NSString * failObj);
這里就不用定義屬性了埂蕊。
2,然后再定義一個實列方法:
- (void)imagePostSuccess:(successBlock)success Fail:(failBlock)fail;
這里直接是將兩個block作為方法的參數(shù)疏唾,所以就不用定義屬性了蓄氧,在后面的指向部分也就不用指向了。
BaicViewController類的.m文件中
1,實現(xiàn)實列方法荸实,在實列方法中:
當判斷成功時我們返回數(shù)據(jù) success(A),A在這里是一個UIImage的對象
當判斷失敗時我們返回數(shù)據(jù) fail(B)匀们,B在這里是一個NSString的對象
最后在調用中就可以在成功和失敗里面取到各自的值了。