美文网首页
ios Blocks

ios Blocks

作者: 天涯笑笑生 | 来源:发表于2017-06-27 17:17 被阅读0次

一、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

相关文章

  • High Performance iOS Apps - Auto

    High Performance iOS Apps - Autorelease Pool Blocks 笔记。改写...

  • 关于Blocks,总得知道点什么

    Blocks是iOS4之后引入的新特性,Blocks顾名思义为块,引申为代码块,使用Blocks可以很轻松的实现匿...

  • iOS 开发:『Blocks』详尽总结 (二)底层原理

    本文用来介绍 iOS 开发中 『Blocks』的底层原理。我将通过 Blocks 由 OC 转变的 C++ 源码来...

  • 【iOS】Blocks

    1、闭包,带有局部变量的匿名函数(即不带名称的函数) 2、声明函数指针变量 int (*funcptr)(int)...

  • ios Blocks

    一、block简介 直接上一张大神的图,block组成一下子就看明白了 PS:其他的就不多做介绍了,文章末尾有收集...

  • 『Blocks』详尽总结 (二)底层原理

    本文用来介绍 iOS 开发中 『Blocks』的底层原理。我将通过 Blocks 由 OC 转变的 C++源码来一...

  • 深入研究Block实现原理

    摘要 Blocks是C语言的扩充功能, iOS 4中引入了这个新功能“Blocks”,那么block到底是什么东西...

  • iOS - 深入研究Block实现原理

    摘要 Blocks是C语言的扩充功能。iOS 4中引入了这个新功能“Blocks”,那么block到底是什么东西呢...

  • 【iOS小结】Blocks

    一. Blocks的认识 什么是Blocks? Blocks是C语言的拓展功能(带有局部变量的匿名函数)。局部变量...

  • iOS-Blocks

    花了一段时间对Block深入的研究了一下,以下是我边研究边写的笔记记录,其中大部分内容都是从多线程和内存管理那本书...

网友评论

      本文标题:ios Blocks

      本文链接:https://www.haomeiwen.com/subject/yvpecxtx.html