【发布时间】:2026-01-30 19:05:01
【问题描述】:
我正在使用 NSURLSession API 向我的 Java servlet 询问上传到我的服务器上的一些照片。然后我在一些 UIImageView 中显示设备上的照片。问题是最终显示一张照片可能需要十秒钟,大约是 100 ko。不用说,这是不可接受的。这是我使用的代码:
@interface ViewPhotoViewController () <UIAlertViewDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (nonatomic) NSURLSession *session;
@end
- (void)viewDidLoad {
[super viewDidLoad];
NSURLSessionConfiguration *config =
[NSURLSessionConfiguration defaultSessionConfiguration];
self.session = [NSURLSession sessionWithConfiguration:config
delegate:nil
delegateQueue:nil];
NSString *requestedURL=[NSString stringWithFormat:@"http://myurl.com/myservlet?filename=%@", self.filename];
NSURL *url = [NSURL URLWithString:requestedURL];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:NO];
[request setTimeoutInterval:30];
[request setHTTPMethod:@"GET"];
[request setURL:url];
//Maintenant on la lance
NSURLSessionDownloadTask *downloadTask = [self.session downloadTaskWithRequest:request completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
NSData *downloadedData = [NSData dataWithContentsOfURL:location
options:kNilOptions
error:nil];
NSLog(@"Done");
NSLog(@"Size: %lu", (unsigned long)downloadedData.length);
UIImage *image = [UIImage imageWithData:downloadedData];
if (image) self.imageView.image = image;
}];
[downloadTask resume];
}
奇怪的是我很快就得到了“完成”和“大小”日志,但照片仍然在很多秒后出现。我的代码有什么问题?
【问题讨论】:
标签: ios servlets nsurlsessiondownloadtask