block的简单使用

作者: 芝麻绿豆 | 来源:发表于2015-10-25 22:30 被阅读191次

block的使用场景

1.把block保存到对象中,恰当时机的时候才去调用
2.把block当做方法的参数使用,外界不调用,都是方法内部去调用,Block实现交给外界决定.
3.把block当做方法的返回值,目的就是为了代替方法.,block交给内部实现,外界不需要知道Block怎么实现,只管调用

ViewController.m文件

@interface ViewController ()
@property(nonatomic,strong)Person *p;
@end
@implementation ViewController
-(void)viewDidLoad {
    [super viewDidLoad];
    [self block1];
    [self block2];
    [self block3]; 
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    _p.blockName();
}
-(void)block1{
    Person *p = [[Person alloc] init];
    // 赋值
    void(^blockname)() = ^() {
        NSLog(@"执行对象中的block");
    };
    p.blockName = blockname;
    // 赋值
    p.blockName = ^(){
        NSLog(@"执行对象中的block");
    };
    _p = p;
}
-(void)block2{
    Person *p = [[Person alloc] init];
    [p eat:^{
        NSLog(@"block作为函数参数");
    }];
}
-(void)block3{
    Person *p = [[Person alloc] init];
    p.eat(@"block作为返回值");
}

Person.h

@property (nonatomic ,strong) void(^blockName)();
-(void)eat:(void(^)())block;
-(void(^)(NSString *))eat;

Person.m

-(void)eat:(void (^)())block{
    // 执行block
    block();
}
-(void (^)(NSString *))eat{
    // 返回block
    return ^(NSString * name){
        NSLog(@"%@---",name);
    };
}

实际应用

封装try—catch块:

+ (void)tryCatchViewControll:(UIViewController *)VC function:(void (^)(void))function{

    @try {
        function();
    } @catch (NSException *exception) {
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示"
                                                                                 message:@"出错了!"
                                                                          preferredStyle:UIAlertControllerStyleAlert];
        [alertController addAction:[UIAlertAction actionWithTitle:@"确定"
                                                            style:UIAlertActionStyleDefault
                                                          handler:^(UIAlertAction *action) {
                                                              
                                                          }]];
        
        [VC presentViewController:alertController animated:YES completion:^{}];
    } @finally {
        
    }
}

相关文章

  • ios block使用

    iOS Block的使用一 .最简单的block使用******使用block的三个步骤:1.定义block变量 ...

  • Block - block简单的使用

    参考文档 iOS Block详解 一、忘记block格式? 样例一.png 样例二.png 二、Block的定义 ...

  • iOS Block使用注意

    block本质是两个结构体,使用block使代码简单易读。使用Block注意: 1、block内部使用外部指针,会...

  • Block简单使用

    block的代码是内联的,效率高于函数调用 block对于外部变量默认是只读属性 block被Objective-...

  • Block简单使用

    block用copy修饰block里不能改变block外面的变量,如果需要改变必须在变量前面加__block 修饰...

  • block简单使用

    一个vc需要加一个view,一个view上面有imageView,label,button等。我们把这个view独...

  • block简单使用

    1.首先在头文件(.h文件)声明一个block属性 @property (nonatomic,copy)void ...

  • Block简单使用

    //block在两个视图的传值 Apush到B B消失时将textfield的值传回A //B.h //给bloc...

  • iOS Block的使用

    一 .最简单的block使用 使用block的三个步骤: 1.定义block变量2.创建block代码块3.调用b...

  • block初窥

    一.block的简单使用 1.block声明 block变量的声明格式为: 返回值类型 (^block名字)(参数...

网友评论

    本文标题:block的简单使用

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