__block
void test2() {
// __block有2個(gè)下劃線
__block int c = 15;
// 聲明了一個(gè)block變量
MySum sum = ^(int a, int b) {
// 如果外部的變量用了__block關(guān)鍵字,就可以在block內(nèi)部修改這個(gè)變量
c = 19;
// block可以訪問外面定義的變量
NSLog(@"c is %i", c);
return a + b;
};
NSLog(@"%i", sum(10, 10));
}
在objective-c中腻惠,我們通常使用__block來聲明一個(gè)變量找御,這樣就可以在閉包內(nèi)對這個(gè)變量進(jìn)行修改。
在swift中沒有__block這種關(guān)鍵字忧换,但是swift中的閉包是做了優(yōu)化處理盔憨,是可以直接捕獲上下文中的變量洗搂。所以可以直接在閉包中對變量進(jìn)行修改。
block
swift block
@property (nonatomic,copy) void(^UserHeadImgClick)(NSString *text); //block
if(self.UserHeadImgClick)
{
self.UserHeadImgClick(@"xx");
}
self.UserHeadImgClick = ^(NSString *text)
{
};
typedef void (^AFHTTPRequestCompletionHandler)(id response, NSError *error);
@interface MJAFNetWorking : NSObject
+ (void)getWithURLString:(NSString *)URLString
parameters:(id)parameters
completion:(AFHTTPRequestCompletionHandler)completionBlock;
+ (void)showCustom:(NSString *)title ConfirmBlock:(void(^)(NSDate *date))confirmBlock