我一直在使用 NSURLSession 下载文件并将它们存储在目录中,使用目标C和XCode 7.3一切正常。我使用 UIProgressView 来显示下载会话的进度。但是当我尝试将代码模块化并将 NSURLSessionDelegate 方法与 UIViewController 类分开时,我无法使用它。
问题说明:
A类: UIViewController 类,它具有表视图和进度视图。
B类: NSObject 类,它有一个启动下载会话的方法(A类的实例作为参数传递给此类的方法)
C类:实现 NSURLSessionDelegate 方法的NSObject类,需要使用 SetProgress:填充A类中的progressView(无法执行)因此我无法将A类的实例传递给C类,只能创建一个不会有帮助的新实例。
当我将所有代码放在一个类中时,它就像魅力一样!我尝试使用协议,但仍然无法这样做。因此,对此相同的任何帮助将不胜感激。提前致谢。
编辑1:C类代码:
-(void) setDelegateForProgressView :(id) delegate {
self.docCatalogInstancePersist = delegate;
}
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{
NSString *downloadInProgress = ENABLED;
self.docCatalogInstancePersist.progressView.hidden= NO;
[[NSUserDefaults standardUserDefaults] setObject:downloadInProgress forKey:@"downloadInProgress"];
[[NSUserDefaults standardUserDefaults] synchronize];
dispatch_async(dispatch_get_main_queue(), ^{
[self.docCatalogInstancePersist.progressView setProgress:(double)totalBytesWritten/(double)totalBytesExpectedToWrite
animated:YES]; });
}