1、如果没有这么处理,会很卡,下载图片如果放到主线程,能影响性能。
[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURLURLWithString:model.notOptIconAddress]]];这个代码就是优化的过程。
- (void)updateTabbarImage {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSArray *tabbarMenuInfoArr = [[[SCAGlobalDataManager shared] getAppMenuData] mutableCopy];
if (!tabbarMenuInfoArr || tabbarMenuInfoArr.count <=0 ) {
return;
}
NSMutableArray *selectedImageArr = [NSMutableArray array];
NSMutableArray *unselectedImageArr = [NSMutableArray array];
NSMutableArray *titleArr = [NSMutableArray array];
for (int i = 0; i < tabbarMenuInfoArr.count; i++) {
MenuAttributeModel *model = (MenuAttributeModel *)tabbarMenuInfoArr[i];
UIImage *selectImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:model.optIconAddress]]];
if (selectImage) {
[selectedImageArr addObject:selectImage];
}
UIImage *unselectedImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:model.notOptIconAddress]]];
if (unselectedImage) {
[unselectedImageArr addObject:unselectedImage];
}
if (model.name) {
[titleArr addObject:model.name];
}
}
dispatch_async(dispatch_get_main_queue(), ^{
if (unselectedImageArr.count == 4 || selectedImageArr.count == 4 || titleArr.count == 4) {
for (int i = 0; i < tabbarMenuInfoArr.count; i++) {
for (MyTabbarButton *b in self.tabbarView.subviews) {
if (b.tag == i + 1) {
MenuAttributeModel *model = (MenuAttributeModel *)tabbarMenuInfoArr[i];
b.mSImage = selectedImageArr[i];
b.mNImage = unselectedImageArr[i];
b.mTitle = model.name;
}
}
}
}
});
});
}