ios Blocks

一、block简介

直接上一张大神的图,block组成一下子就看明白了


图片.png

PS:其他的就不多做介绍了,文章末尾有收集的链接,很全面

二、

Block回调
(通俗讲就是在一个方法中声明block,并在此方法中合适的地方使用它,当这个方法在其他地方被调用时,需要实现block的本体,执行过程:方法被调用-->执行方法-->执行到使用block的地方-->程序会执行他的本体,而本体在调用此方法的地方,因此程序回调到调用处,执行block本体)
其实就犹如一个方法声明和使用在一处,而实现确在另一处,使用时就自然而然的执行实现的代码
PS:整个执行过程是同步的,只是来回调用

  • 声明block类型的变量,并在合适的地方调用
- (void )httpRequestWithStringUrl:(NSString *)strUrl complet:(void (^)(NSDictionary *responseDic, BOOL isSeccuss))complete{
    
    strUrl = [strUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    
    NSURL *url = [NSURL URLWithString:strUrl];
    
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    NSURLSession *session = [NSURLSession sharedSession];
    
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *taskError){
        NSLog(@"Register请求完成!");
        if (!taskError) {
            //NSError *jsonError = nil;
          NSDictionary *responseDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            complete(responseDic,YES);
        }else{
            NSLog(@"\ntask error: %@", taskError.localizedDescription);
            complete(nil,NO);
        }
    }];
    
    [task resume];
}

  • 在使用含有block的方法时,书写block本体,当block变量在被调用的方法中使用是,程序就会回调,执行block的本体
[[WebConnect sharedWebConnect] httpRequestWithStringUrl:strUrl complet:^(NSDictionary *responseDic, BOOL isSeccuss){
        if (isSeccuss) {
            NSLog(@"netObject: %@",responseDic);
        }
    }];


参考:
注重使用
Objective-C语法之代码块(block)的使用
block专题
block专栏
原理基础
Objective-C中的Block

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础 1. 为什么说Objective-C是一门动态的语言? 2. 讲一下MVC和MVVM,MVP? 3. 为...
    波妞和酱豆子阅读 3,361评论 0 46
  • 花了一段时间对Block深入的研究了一下,以下是我边研究边写的笔记记录,其中大部分内容都是从多线程和内存管理那本书...
    doudo阅读 165评论 0 0
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,212评论 30 472
  • 禅与 Objective-C 编程艺术 (Zen and the Art of the Objective-C C...
    GrayLand阅读 1,654评论 1 10
  • 要得到你想要的某样东西,最可靠的办法是让你自己配得上它!——查理·芒格 每个人在迷惘时,总是希望能找到心灵深处的慰...
    贵在随心阅读 591评论 0 1