У меня есть UITabBarController
, где файлы UITableViewControllerA и UITableViewContollerB показывают ход загрузки файлов.AFNetworking несколько загрузок замедления основной нити
У меня есть класс Singleton с методом загрузки, который вызывает мой подкласс AFHTTPClient
и использует NSNotificationCenter
для уведомления моего UITableViewControllerB о ходе выполнения загрузки. Но этот текущий способ замедляет работу пользовательского интерфейса, где он почти не используется, и я не уверен, как я могу улучшить процесс. Я читал, что функции обратного вызова AFNetworking вызываются в основном потоке. Является ли медленный ответ UI из моего NSNotificationCenter?
Я также хотел бы упомянуть, что я запускаю это на Симуляторе.
Метод от моего класса Singleton.
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:uniqueName forKey:@"unique"];
[dict setObject:[NSNumber numberWithFloat:0] forKey:@"progress"];
[self.active addObject:dict];
[[CustomHTTP client] uploadFileName:@"filename" withBytes:data toPath:serverPath progress:^(float progress) {
[dict setObject:progress forKey:@"progress"];
NSMutableDictionary *info = [[NSMutableDictionary alloc] init];
[info setObject:[NSNumber numberWithInt:[self getIndexByUniquename:uniqueName]] forKey:@"row"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"ProgressNotification" object:self userInfo:info];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
} andFailure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
UITableViewControllerB.m
- (void) receiveTestNotification:(NSNotification *) notification {
if ([[notification name] isEqualToString:@"ProgressNotification"]) {
NSDictionary *dict = notification.userInfo;
int row = [[dict objectForKey:@"row"] intValue];
self.inProgress = [Transfer defaultTransfer].active;
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationNone];
}
}
Сколько загрузок вы используете одновременно? Используйте инструменты, чтобы увидеть, что происходит. – Wain
@Wain Я запускал 2 загрузки 30 МБ +. Какой инструмент я должен использовать? –
Используйте диапазон, проверьте использование процессора (профилирование времени) и использование памяти. 2 загрузки одновременно должны быть в порядке. Сколько обновлений прогресса вы получаете. – Wain