关于block(1)

标签: iOS 技术


写在开始之前

这篇文是关于我本人在OC开发中对block的一些认识,以实战为例,不会很全面,但应该能够为一些初学者给予一定的帮助。
那么,就请你打开Xcode,新建一个工程,然后一边看着文章,一边敲打下文中代码,相信你会有所收获的。

初遇block

相信第一次遇到block应该是UIKit框架中的封装的核心动画方法吧,如下:

- (void)animationBlock {
    // 动画
    [UIView animateWithDuration:1.0 animations:^{
        NSLog(@"animation!");
    }];
}

系统封装的方法(API),我们不需要做更多的操作,只需要写上对动画的实现过程就可以了,是非常简单的,貌似没有什么难度,当然动画实现除外!

再遇block

除诸如动画之类的block外,当我们在实际开发中就会遇到当用代理或者通知无法解决问题时,当我们想通过次级界面向上级界面传值时,那么就应该考虑一种更加简洁而十分实用的反向传值方式,即block。
可以这么说,block是封装了一段代码块,等待着被调用
最基本的block
定义一个block,然后调用:

- (void)blockDemo {
    // 定义block
    // 类型 变量名 形参 = 值
    void (^myBlock)(void) = ^ () {
        NSLog(@"hello block!");
    };

    // 调用执行
    myBlock();
}

说明:

上面方法中定义的block块,类型为void,变量名为myBlock,形参为void(注意:当没有参数时可以写void,也可以不写,这只是习惯而已),值为给block封装的代码块,即'='后面,是给block初始化。
这里要明白的是,''是block的标识,只要是带''这个符号那么你就迅速明白它是一个block
block的调用跟函数的调用是一样的,变量名(),如果有参数,则传入实参,无则不传

小技巧:

用快捷方式inlineblock可以快速定义block,当然前提是需要你对定义block十分熟练了,它的样子如下:

 <#returnType#>(^<#blockName#>)(<#parameterTypes#>) = ^(<#parameters#>) {
        <#statements#>
}

写在文末

相信看到此处的童鞋已经对block和block定义有了初步的认识了,至少明白block就是为了封装一段代码的,而且也应该会定义一个block了吧。
最后

如果喜欢就给个赞呗,未完待续...

你可能感兴趣的:(关于block(1))