美文网首页
iOS Block 应用浅析

iOS Block 应用浅析

作者: BarneyChai | 来源:发表于2018-03-06 15:54 被阅读0次

Block objects are a C-level syntactic and runtime feature. They are similar to standard C functions, but in addition to executable code they may also contain variable bindings to automatic (stack) or managed (heap) memory. A block can therefore maintain a set of state (data) that it can use to impact behavior when executed.

You can use blocks to compose function expressions that can be passed to API, optionally stored, and used by multiple threads. Blocks are particularly useful as a callback because the block carries both the code to be executed on callback and the data needed during that execution.


Block的声明与使用:

Block -- 使用场景1(扯蛋):

项目经理:

    狗蛋,把前台MM的照骗美化一下:{要求1:美白,要求2:去黑眼圈,要求3:瘦脸,要求4:凸显身材}

程序员狗蛋:

    我是程序员,不干设计师的活,我不会,你行你上,不行别废话

项目经理:

     我上就我上,然后不想跟狗蛋说话,并丢给狗蛋一个脚本

程序员狗蛋:

    双击脚本,美化完成

项目经理:

    狗蛋给我倒杯水{1:过来拿杯子,2:到旁边接水,3:拿回来双手递给我}

程序员狗蛋:

    执行倒杯水

block 的一个使用场景,把block当做参数传递,流程简写代码:

程序员:

@interface Developer

    - (void)doSomething:(^)()function; //定义

@end

@implementation Developer

- (void)doSomething:(^)()function{  //实现

 function();

}

@end

经理:

Developer *goudan = [[Developer alloc] init]; //初始化

[goudan doSomething :^(){ //调用

    //do 美白

    //do 去黑眼圈

    //do 瘦脸.......

}];

[goudan  doSomething :^(){ //1:过来拿杯子,2:到旁边接水,3:拿回来双手递给我 }];

简析:block 可以简单的理解为一个函数集,可以当作一个参数/返回值传递

you can use blocks to compose function expressions that can be passed to API

Block -- 使用场景2(扯蛋):

卓越的程序员狗蛋学会了美工的全部技能

项目经理:

    狗蛋,把前台MM的照骗美化一下:{要求1:美白,要求2:去黑眼圈,要求3:瘦脸,要求4:凸显身材}

卓越的程序员狗蛋 :

    拿到照骗开始美化。。。。。

    经理你要美多白?脸要瘦到什么样?.......

项目经理:

     少废话,这个往左一点点,哎不对,往右两个像素,哎不对,向下,对向下,这个颜色换成色彩斑斓的黑

    10年过后。。。。。

卓越的程序员狗蛋:

    经理,我也不知道色彩斑斓的黑是什么样,而且我还有别的任务,等不了你扯那么长时间,我给你个方法,你自己填写参数吧

这种情况程序员的api的写法:

@interface Developer

    - ((^)(UIColor *color ))LandscapingPhotos:(UIImage*)image; //定义

@end

@implementation Developer

- ( (^)( UIColor *color ) )LandscapingPhotos:(UIImage*)image{

    //执行一系列的美化操作。。。。。。

     return   ^( UIColor *color ){

        if ( color ){

            //经理给了我一个色彩斑斓的黑,我直接用这个值就好了

            //颜色调整

        }

    };

}

经理

Developer *SuperGoudan= [[Developer alloc] init]; //初始化

id bfun = [SuperGoudan LandscapingPhotos:照骗];

bfun([UIColor “色彩斑斓的黑”]);//想怎么玩就怎么玩,怎么开心怎么玩

以上为Block 作为返回值的用法。。。

待续。。。

相关文章

  • iOS-2 Block

    block块 系列文章: iOS Block浅浅析 - 简书 iOS Block实现原理 iOS Block __...

  • iOS Block 应用浅析

    Block objects are a C-level syntactic and runtime feature...

  • iOS应用程序的脱壳实现原理浅析

    iOS应用程序的脱壳实现原理浅析 iOS应用程序的脱壳实现原理浅析

  • iOS block浅析

    iOS开发中经常会使用block结合gcd来完成多线程编程,block也属于对象,主要有三种类型:1、 _NSCo...

  • iOS Block浅析

    Block实现原理 要想知道Block的内部实现,需要知道Block编译完后是什么样子,使用clang可看到Blo...

  • iOS 底层知识梳理

    3月11日AppDelegate模块化历程 iOS Block浅浅析iOS-MRC与ARC区别以及五大内存区 3月...

  • iOS 界面性能优化浅析

    iOS 界面性能优化浅析 iOS 界面性能优化浅析

  • iOS Block -浅析 文章

    Block 的使用有两种:1.独立Block 。2.内联Block 。 《一》独立Block 使用方式 一、定义一...

  • iOS Block浅浅析

    前言 Block真的难,笔者静下心来读《Objective-C 高级编程 iOS与OS X多线程和内存管理》,读的...

  • iOS Block存储域及循环引用

    系列文章:iOS Block概念、语法及基本使用iOS Block实现原理iOS Block __block说明符...

网友评论

      本文标题:iOS Block 应用浅析

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