使用场景:当想抽取代码到当前类中,通常的做法是直接抽取成一个对象方法,但如果将要抽取很多代码在当前类中,并且被抽取的代码只是在同一个方法中被多次调用,会导致当前类的零碎的方法过多,这时就可以使用Block复用代码
直接抽取成一个对象方法
- (void) dealingResult:(NSArray *)statuses
{
/*被抽取的代码*/
}
- (void)loadNewStatus
{
NSArray *statuses = [StatusTool statusesWithParams:params];
if (statuses.count) {
//调用
[self dealingResult:statuses];
} else {
[HttpTool get:@"https://api.weibo.com/2/statuses/friends_timeline.json" params:params success:^(id json) {
//调用
[self dealingResult:statuses];
} failure:^(NSError *error) {
}];
}
}
使用Block复用代码, 被抽取的代码只在这个方法中被复用
- (void)loadNewStatus
{
void (^dealingResult)(NSArray *) = ^(NSArray *statuses){
/*被抽取的代码*/
};
NSArray *statuses = [StatusTool statusesWithParams:params];
if (statuses.count) {
//调用
dealingResult(statuses);
} else {
[HttpTool get:@"https://api.weibo.com/2/statuses/friends_timeline.json" params:params success:^(id json) {
//调用
dealingResult(json[@"statuses"]);
}];
}
}```