Block的简单使用

block是对象,它封装了一段代码,这段代码可以在任何时候执行。block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:block是inline的,并且它对局部变量是只读的,^是block语法的标识。
blcok常使用的3种方式:
1.block作为对象的属性
2.block作为方法参数
3.block作为返回值(使用场景很多,扩展性特别强)

1.block作为对象的属性
  people类
  #import 
  typedef void (^PeopleBlock) (void);
  @interface People : NSObject
  @property (nonatomic,strong) PeopleBlock peopleBlock;
  @end

  vc控制器
  - (void)block1{
      People *p = [People new];
      void (^LCBlock)(void) = ^(){
          NSLog(@"1.block作为对象的属性");
      };
      p.peopleBlock = LCBlock;
      p.peopleBlock();
  }
block作为方法参数
people.h
#import 
@interface People : NSObject
 - (void)eat:(void(^)(NSString *))blcok;
@end

people.m
- (void)eat:(void (^)(NSString *))blcok{
    blcok(@"2.block作为方法参数");
}

vc控制器
- (void)block2{
    People *p = [People new];
    [p eat:^(NSString * str) {
        NSLog(@"%@",str);
    }];
}
block作为返回值(使用场景很多,扩展性特别强)
people.h
#import 
@interface People : NSObject
- (void(^)(NSString *))str;
@end

people.m
- (void (^)(NSString *))str{
    return ^(NSString *str){
        NSLog(@"%@",str);
    };
}


vc控制器
- (void)block3{
    People *p = [People new];
    p.str(@"3.block作为返回参数");
}

在平时开发当中,这3种是使用最频繁的,理解透这三种使用,是对我们的基本要求。
END

你可能感兴趣的:(Block的简单使用)