系统框架中越来越多的方法和函数,使用 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
});