Blcok

__block

void test2() {
    // __block有2个下划线
    __block int c = 15;
    
    // 声明了一个block变量
    MySum sum = ^(int a, int b) {
        // 如果外部的变量用了__block关键字,就可以在block内部修改这个变量
        c = 19;
        
        // block可以访问外面定义的变量
        NSLog(@"c is %i", c);
        
        return a + b;
    };
    
    NSLog(@"%i",  sum(10, 10));
}

在objective-c中,我们通常使用__block来声明一个变量,这样就可以在闭包内对这个变量进行修改。
在swift中没有__block这种关键字,但是swift中的闭包是做了优化处理,是可以直接捕获上下文中的变量。所以可以直接在闭包中对变量进行修改。


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

你可能感兴趣的:(Blcok)