Поскольку Apple заставит нас включить ATS с 2017 года, я занимаюсь некоторыми расследованиями, но имею некоторые сомнения относительно класса SDWebImage
.Почему sdwebimage может успешно загружать изображение при включенной настройке безопасности приложения на транспорте?
Если я использую ниже код, изображение будет загружен успешно
[self.myImageView sd_setImageWithURL:[NSURL URLWithString:@"http://f.hiphotos.baidu.com/image/h%3D200/sign=1c3f18c4524e9258b93481eeac83d1d1/b7fd5266d0160924be0452bbd00735fae6cd3468.jpg"]];
Но если я использую метод в NSData
, изображение не будет загружено.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://f.hiphotos.baidu.com/image/h%3D200/sign=1c3f18c4524e9258b93481eeac83d1d1/b7fd5266d0160924be0452bbd00735fae6cd3468.jpg"]];
UIImage *image = [UIImage imageWithData:data];
dispatch_async(dispatch_get_main_queue(), ^{
self.myImageView.image = image;
});
});
Как это делает SDWebImage
?
Вы правы, SDWebImage подчиняется тем же ограничениям ОВД. И я, наконец, нашел причину, когда я впервые проверил загрузку http-изображений, я отключил ATS, поэтому SDWebImage может загрузить изображение успешно, но затем я включил ATS, SDWebImage все равно может загрузить изображение успешно, но это потому, что SDWebImage кэшировало изображение, а не загружалось из Интернета, поэтому, если я изменю параметр на другой URL-адрес URL-адреса при включенном ATS, он все равно не загрузится. –