Blocks Programming Helper ↗ Blocks in System APIs

系统框架中越来越多的方法和函数,使用 Block 作为参数。
Block 在系统框架中使用的案例包括:

  • 完成处理器
  • 通知处理器
  • 视图动画
  • 枚举器
  • 比较器
  • 并行任务

完成处理器

//declare
+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion;
//completion 被调用当动画完成时,有一个参数没有返回值。

//invoke
[UIView transitionFromView:fromv toView:tov duration:dur options:opt completion:^(BOOL finished) {
    //code
}];

通知处理器

//declare
- (id<NSObject>)addObserverForName:(NSNotificationName)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *note))block;
//block 被调用当收到通知时,有一个参数没有返回值。

//invoke
[ncd addObserverForName:ntfn object:nil queue:quu usingBlock:^(NSNotification *ntf) {
    //code
}];

视图动画

//declare
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations;
//animations 被调用在封装动画时,没有参数没有返回值。

//invoke
[UIView animateWithDuration:dur animations:^{
    //code
}];

枚举器

//declare
- (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block;
//block 被调用当遍历元素时,有三个参数没有返回值。

//invoke
[ary enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    //code
}];

比较器

typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);
//declare
- (NSArray *)sortedArrayUsingComparator:(NSComparator)cmp;
//cmp 被调用当比较元素时,有二个参数一个返回值。

//invoke
[ary sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    //code
}];

并行任务

//操作队列
//declare
- (void)addOperationWithBlock:(void (^)(void))block;
//block 被添加到队列等待被调用,没有参数没有返回值。

//invoke
[quu addOperationWithBlock:^{
    //code
}];

//调度队列
typedef void (^dispatch_block_t)(void);
//declare
void dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);
//block 被添加到队列等待被调用,没有参数没有返回值。

//invoke
dispatch_sync(quu, ^{
    //code
});
    原文作者:earlyMorning
    原文地址: https://segmentfault.com/a/1190000012808455
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞