这使得在开发中进行耗时任务进度的监听将什么麻烦,在iOS7之后,系统提供了NSProgress类来专门报告任务进度。...NSProgress对象都默认作为子节点添加。...* sub = [NSProgress progressWithTotalUnitCount:10 parent:progress pendingUnitCount:5]; NSProgress...NSProgress *)currentProgress; //创建一个NSProgress对象,需要传入进度的单元数量 + (NSProgress *)progressWithTotalUnitCount...parent:(NSProgress *)parent pendingUnitCount:(int64_t)portionOfParentTotalUnitCount; //NSProgress实例的初始化方法
引言 iOS 7 之后苹果推出了一个新的类 NSProgress 专门用来管理进度,比如在下载数据或者执行任务的时候要显示进度,那么这个类就可以很方便地对进度进行管理,供开发者拿去控制表示进度的UI界面...这个类的用法其实很简单,总结起来就是下面几个步骤: 创建实例,同时设定表示任务要完成的数量的总值(这个总值只是一个用来计算比例的概念); 配置KVO观察其进度的变化,从而对UI做出更新(NSProgress...单任务执行 直接上代码: @interface ViewController () @property (nonatomic, strong) NSProgress *progress; @end...在KVO的响应方法中,列出了三种进度表示方式,这都是原生支持的,分别对应三种显示效果,如下图: 多任务执行 所谓的多任务执行,是指 NSProgress 类可以添加多个子任务,分别占据主任务的一定比例...*sub1 = [NSProgress progressWithTotalUnitCount:10 parent:self.progress pendingUnitCount:4]; NSProgress
self.urlStr = @"http://10.10.100.100/test333.pdf"; [manager GET:_urlStr parameters:nil progress:^(NSProgress...uploadProgress)) uploadProgress downloadProgress:(nullable void (^)(NSProgress...uploadProgress)) uploadProgress downloadProgress:(nullable void (^)(NSProgress...*uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress *...*uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress *
- (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters progress:(void (^)(NSProgress...method URLString:(NSString *)URLString parameters:(id)parameters uploadProgress:(nullable void (^)(NSProgress...*uploadProgress)) uploadProgress downloadProgress:(nullable void (^)(NSProgress *downloadProgress))...*uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress *downloadProgress...*uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress *downloadProgress
Of course, if an NSProgress is cancellable you should actually implement cancellability by setting a...对于这些属性,NSProgress默认为符合KVO标准,并且通知始终在更新属性的线程上发送。 这些属性用于传递是否应该在进度报告用户界面中显示取消和暂停的控件。...NSProgress本身不会对这些属性做任何事情,除了帮助将进度记录的值传递给进度观察员。 在NSProgress的生命周期中,这些属性的值实际上以任何方式改变都是有效的。...当然,如果一个NSProgress可以被取消,你应该通过设置一个取消处理程序或者让你的代码轮询调用-isCancelled的结果来实现可取消性。 同样适用于pausability。...即使该方法在接收方的super类上调用,或者由于发布接收方或接收方的super类而导致的另一个进程中的NSProgress实例,也会调用该block。 您的块不会在任何特定队列上调用。
dataTaskWithRequest:(NSURLRequest *)request uploadProgress:(nullable void (^)(NSProgress...uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress...addDelegateForDataTask:(NSURLSessionDataTask *)dataTask uploadProgress:(nullable void (^)(NSProgress...*uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress *
AFHTTPSessionManager manager]; [manager GET:url.absoluteString parameters:dictionary progress:^(NSProgress...NSURL URLWithString:urlString]; [manager POST:url.absoluteString parameters:dictionary progress:^(NSProgress...appendPartWithFileData:data name:@"pic" fileName:@"测试.png" mimeType:@"png"]; } progress:^(NSProgress
NSString *)URLString parameters:(id)parameters progress:(void (^)(NSProgress...uploadProgress)) uploadProgress downloadProgress:(nullable void (^)(NSProgress...uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress...uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress...*uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress *
NSURLSession AFURLSessionManager AFHTTPSessionManager(封装了常用的 HTTP 方法) GET POST UIKit + AFNetworking 分类 NSProgress...int64_t totalUnitCount; 需要下载文件的总大小 @property int64_t completedUnitCount; 当前已经下载的大小 */ NSProgress...filePath, NSError *error) { NSLog(@"%@",filePath.absoluteString); }]; /* 要跟踪进度,需要使用 NSProgress...NSProgress只是一个对象!如何跟踪进度!-> KVO 对属性变化的监听!...[downTask resume]; } // 收到通知调用的方法 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(NSProgress
. */ - (void)loadRequest:(NSURLRequest *)request progress:(NSProgress * _Nullable __autoreleasing...NSString *)MIMEType textEncodingName:(nullable NSString *)textEncodingName progress:(NSProgress...- (void)loadRequest:(NSURLRequest *)request progress:(NSProgress * _Nullable __autoreleasing...NSString *)MIMEType textEncodingName:(nullable NSString *)textEncodingName progress:(NSProgress...加载指定请求 主要看一下实现 - (void)loadRequest:(NSURLRequest *)request progress:(NSProgress * _Nullable
id formData))block progress:(nullable void (^)(NSProgress...void (^)(id formData))block progress:(nullable void (^)(NSProgress...uploadProgress)) uploadProgress downloadProgress:(nullable void (^)(NSProgress...NSURLRequest *)request progress:(nullable void (^)(NSProgress...*uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress *
parameters:(nullable id)parameters progress:(nullable void (^)(NSProgress...parameters:(nullable id)parameters progress:(nullable void (^)(NSProgress...parameters:(nullable id)parameters progress:(nullable void (^)(NSProgress...parameters:(nullable id)parameters progress:(nullable void (^)(NSProgress
NSProgress - (nullable NSProgress *)downloadProgressForTask:(NSURLSessionTask *)task; ///-----------...@property (nonatomic, strong) NSProgress *uploadProgress; //下载进度NSProgress @property (nonatomic, strong...alloc] initWithParent:nil userInfo:nil]; _downloadProgress = [[NSProgress alloc] initWithParent:...nil userInfo:nil]; //遍历两个上传和下载NSProgress设置一些属性 __weak __typeof__(task) weakTask = task;...for (NSProgress *progress in @[ _uploadProgress, _downloadProgress ]) { //初始化progress
*uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress *downloadProgress...其内部实现中设置这两个NSProgress对应的cancel、pause和resume这三个状态,正好对应session task的cancel、suspend和resume三个状态。...当task任务的进度发生变化时,KVO则更新对应的progress属性值,然后赋新值触发时会执行KVO代理中上传或者下载progress的处理,将执行对应的包含object(属性为NSProgress)...的代码块,该代码块也就是最终执行网络请求方法中progress:(void (^)(NSProgress * _Nonnull))uploadProgress位置的block代码块。...此处代码块中可根据NSProgress的状态做用户自定义的行为,比如需要更新UI进度条的状态之类等等。 ?
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager GET:URL parameters:nil progress:^(NSProgress...NSMutableDictionary *parameters = @{@"":@"",@"":@""}; [manager POST:URL parameters:parameters progress:^(NSProgress...//下载任务 NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress...appendPartWithFileData:data name:@"file" fileName:@"123.png" mimeType:@"image/png"]; } progress:^(NSProgress...name:@"file" fileName:@"1234.png" mimeType:@"application/octet-stream" error:nil]; } progress:^(NSProgress
postData]; NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request uploadProgress:^(NSProgress...* _Nonnull uploadProgress) { } downloadProgress:^(NSProgress * _Nonnull downloadProgress
id formData))block progress:(nullable void (^)(NSProgress...NSString *)URLString parameters:(id)parameters progress:(void (^)(NSProgress...*)URLString parameters:(id)parameters progress:(void (^)(NSProgress...void (^)(id formData))block progress:(nullable void (^)(NSProgress...uploadProgress)) uploadProgress downloadProgress:(nullable void (^)(NSProgress
: %lu", status); }]; ##默认请求样式 //使用默认请求样式: [_nvNetworking get:@"/open/ads" parameters:nil progress:^(NSProgress...nil requestSerializer:requestSerializer responseSerializer:responseSerializer header:nil progress:^(NSProgress...NVNetworking shareInstance]; [manager upload:@"/file/upload" parameters:nil uploadParam:uploadParam progress:^(NSProgress...NVNetworking shareInstance]; [manager upload:@"/file/upload" parameters:nil uploadParams:array progress:^(NSProgress
self.urlStr = @"http://10.20.201.78/test3.pdf"; [manager GET:_urlStr parameters:nil progress:^(NSProgress...uploadProgress)) uploadProgress downloadProgress:(nullable void (^)(NSProgress...uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress...*/ NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress...*uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress *
Authorization"]; } //GET/POST [manager GET:url parameters:pars progress:^(NSProgress...Authorization"]; } //GET/POST [manager POST:url parameters:pars progress:^(NSProgress
领取专属 10元无门槛券
手把手带您无忧上云