Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NSURLSessionTask:添加到iOS11中的“进度”属性似乎毫无用处

NSURLSessionTask:添加到iOS11中的“进度”属性似乎毫无用处
EN

Stack Overflow用户
提问于 2018-03-03 11:37:26
回答 1查看 166关注 0票数 1

NSURLSessionTask中,iOS11中的一个新属性是progress属性:

对总体任务进度的描述 @property(只读,强) NSProgress *progress;

当在1025886字节中的781334字节查询时,输出如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<NSProgress: 0x1c0324ec0> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 0 of 1025886  
  <NSProgress: 0x1c0325140> : Parent: 0x1c0324ec0 / Fraction completed: 0.0000 / Completed: 781334 of -1  
  <NSProgress: 0x1c03251e0> : Parent: 0x1c0324ec0 / Fraction completed: 0.0000 / Completed: 0 of 100  

注意,fractionCompleted是0.000而不是0.762。

当数据任务完成时,它的progress属性的输出如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<NSProgress: 0x1c4131440> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 5 of 1142597  
  <NSProgress: 0x1c4131580> : Parent: 0x1c4131440 / Fraction completed: 0.0000 / Completed: -1 of -1  

注:Completed: 5 of 1142597

NSURLSessionTask的进度报告似乎毫无用处。因此,为了在iOS11中向UI报告进度,我仍然必须编写与以前相同的样板代码。那么,这个新属性的目的是什么呢?

EN

回答 1

Stack Overflow用户

发布于 2018-06-15 02:14:50

当我向苹果报告这个错误时,我创建了一个示例项目,它位于这里:https://github.com/mickeyl/iOS-Bug-Example-Projects/tree/master/NSURLSessionTask-Progress-Broken

下面是用上面的示例项目创建的日志的摘录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2018-06-15 12:02:17.641650+0200 NSURLSessionTask-Progress-Broken[74670:2636851] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 0.4588 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 0.4303 / Completed: 462000019 of 1073741824
2018-06-15 12:02:17.641917+0200 NSURLSessionTask-Progress-Broken[74670:2636851] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 0.4588 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 0.4303 / Completed: 462002915 of 1073741824
2018-06-15 12:02:17.642193+0200 NSURLSessionTask-Progress-Broken[74670:2636851] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 0.4588 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 0.4303 / Completed: 462005811 of 1073741824
2018-06-15 12:02:17.642476+0200 NSURLSessionTask-Progress-Broken[74670:2636851] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 0.4588 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 0.4303 / Completed: 462008707 of 1073741824
2018-06-15 12:02:17.642828+0200 NSURLSessionTask-Progress-Broken[74670:2636851] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 0.4588 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 0.4303 / Completed: 462014499 of 1073741824
2018-06-15 12:02:17.643083+0200 NSURLSessionTask-Progress-Broken[74670:2636851] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 0.4588 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 0.4303 / Completed: 462017395 of 1073741824
2018-06-15 12:02:17.643344+0200 NSURLSessionTask-Progress-Broken[74670:2636851] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 0.4588 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 0.4303 / Completed: 462020291 of 1073741824
2018-06-15 12:02:17.643611+0200 NSURLSessionTask-Progress-Broken[74670:2636851] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 0.4588 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 0.4303 / Completed: 462023187 of 1073741824
2018-06-15 12:02:17.643878+0200 NSURLSessionTask-Progress-Broken[74670:2636851] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 0.4588 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 0.4303 / Completed: 462026083 of 1073741824

[...]

2018-06-15 12:03:29.216655+0200 NSURLSessionTask-Progress-Broken[74670:2636247] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 1.0000 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 1.0000 / Completed: 1073727891 of 1073741824
2018-06-15 12:03:29.217201+0200 NSURLSessionTask-Progress-Broken[74670:2636854] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 1.0000 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 1.0000 / Completed: 1073730787 of 1073741824
2018-06-15 12:03:29.217407+0200 NSURLSessionTask-Progress-Broken[74670:2636854] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 1.0000 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 1.0000 / Completed: 1073733683 of 1073741824
2018-06-15 12:03:29.217889+0200 NSURLSessionTask-Progress-Broken[74670:2637014] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 1.0000 / Completed: 5 of 100  
  <NSProgress: 0x600000131440> : Parent: 0x600000131800 / Fraction completed: 1.0000 / Completed: 1073739475 of 1073741824
2018-06-15 12:03:29.218147+0200 NSURLSessionTask-Progress-Broken[74670:2637014] Progress = <NSProgress: 0x600000131800> : Parent: 0x0 / Fraction completed: 1.0000 / Completed: 100 of 100

在这里,我们可以观察到--由于某种原因--对于一个NSURLSessionTask来说,有一个父NSProgress和一个子NSProgress创建。虽然子进程包含了适当的信息,但在大多数情况下,父进程似乎坚持5/100个单元。至少它使fractionCompleted在某种程度上是正确的。

因此:当坚持子NSProgress时,progress属性有点有用。

不幸的是,我需要支持iOS一直到9,这就是为什么我必须创建我自己的替代品无论如何。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49088405

复制
相关文章
双精度,单精度和半精度
浮点数是计算机上最常用的数据类型之一,有些语言甚至数值只有浮点型(Perl,Lua同学别跑,说的就是你)。
用户1148523
2019/05/27
6K0
ctype.h
摘自维基百科 http://zh.wikipedia.org/wiki/Ctype.h
用户7886150
2021/02/25
8320
python ctype模块 (一)
官网:https://docs.python.org/2.6/library/ctypes.html?highlight=ctype#module-ctypes ctypes 的简单使用。 ctyp
py3study
2020/01/08
8370
SpringBoot返回前端Long型丢失精度咋办
最近为Prong开发了一个基于snowflake算法的Java分布式ID组件,将实体主键从原来的String类型的UUID修改成了Long型的分布式ID。修改后发现前端显示的ID和数据库中的ID不一致。例如数据库中存储的是:812782555915911412,显示出来却成了812782555915911400,后面2位变成了0,精度丢失了:
用户3467126
2021/11/09
4.3K0
SpringBoot返回前端Long型丢失精度咋办
轮询和长轮询 轮询和长轮询
轮询和长轮询 轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 优点:后端程序编写比较容易。 缺点:请求中有大半是无用,浪费带宽和服务器资源。 实例:适于小型应用。 长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。 优点:在无消息的情况下不会频繁的请求。 缺点:服务器hold连接会消耗资源。 实例:WebQQ、Hi网页版、Facebook IM。 另外
大道七哥
2019/09/10
2.2K0
轮询和长轮询

            轮询和长轮询
轮询和长轮询_http长轮询
长轮询:说白了也是客户端请求服务端,但是服务端并不是即时返回,而是当有内容更新的时候才返回内容给客户端,从流程上讲,可以理解为服务器向客户端推送内容;
全栈程序员站长
2022/09/20
1.5K0
利用高精度拼接算法实现长柱形物体检测
今天跟大家分享的是我们在近几年多次成功在客户现场部署的利用高精度拼接算法实现长柱形物体检测方案。
小白学视觉
2022/09/28
3220
C++ AMP双精度Windows环境测试报告
测试日期:2014-2-26 测试环境:华硕ESC1000超算工作站 测试GPU:AMD FirePro S7000 测试系统:Win7 & Win 8 测试过程: 测试代码下载:完整的C++ AMP工程 参考材料: 微软对于C++ AMP双精度的描述为: (http://blogs.msdn.com/b/nativeconcurrency/archive/2012/02/07/double-precision-support-in-c-amp.aspx) A WDDM 1.1 drive
GPUS Lady
2018/03/30
1K0
python 与 C 的交互(ctype
对指针实例赋值只会改变其指向的内存地址,而不是改变内存的内容。指针实例有一个contents属性,返回这个指针所指向的对象。
py3study
2020/01/07
1.7K0
python 与 C 的交互(ctype
AMD 新卡皇,双精度达到2.53TFlops
在 AMD FirePro S9150 服务器 GPU 面前,强度最大的计算密集型工 作负载和复杂计算都不能构成挑战。它支持 OpenCL™ 1.2、16GB GDDR5 显存、最高可达 2.53 TFLOPS 的峰值双精度浮点运算性能和 最高可达 10.8 GFLOPS/W 的峰值双精度性能,这让您的选择毋庸 置疑。AMD FirePro S9150 GPU 能够提供无与伦比计算性能和每瓦特 性能。 GPU 计算性能处于业内领先地位 作为首款具有 ½ 比率双精度, 并突破 2.0 TFLOPS 双精
GPUS Lady
2018/03/30
1.6K0
小朋友学C语言(4):单精度浮点数与双精度浮点数
上节课 简单介绍了浮点数。计算机程序中的浮点数分为单精度浮点数和双精度浮点数。 单精度和双精度精确的范围不一样。 计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。 稍大一点的单位是字节(Byte,简写为B)。 再大一级的是千字节(kilo Bytes),用k来表示。 再大一级的单位是兆字节(Mega Bytes),用M来表示。一张照片的大小通常为1~3M。 再大一级的单位为G。一部高清电影的大小通常为1~2G。 再大一级的单位为T。 换算关系为: 1B = 8bit 1k =
海天一树
2018/04/17
2.9K0
小朋友学C语言(4):单精度浮点数与双精度浮点数
避坑 | 记一次前端长整数精度丢失问题
后端Java实现的接口如下,返回一个json格式的大整数 123456789123456789:
程序员鱼皮
2020/11/25
11.8K1
避坑 | 记一次前端长整数精度丢失问题
C/C++ 双精度double 数据相加出错缺陷解释
该文章讲述了作者在 C++ 社区遇到的一个问题,在两个数值相加时,程序显示的数值误差可能导致结果出错。作者通过使用 fabs 函数来修正误差,并给出了具体的解决方法。
林冠宏-指尖下的幽灵
2018/01/02
1.4K0
ANTNet|端侧架构,精度速度双超MobileNetV2
code: https://github.com/yyxiongzju/ANTNets
AIWalker
2020/08/10
1.7K0
ANTNet|端侧架构,精度速度双超MobileNetV2
spring ajax 长轮询,Ajax轮询和长轮询
缺点:Ajax轮询需要服务器有很快的处理速度与快速响应。long poll需要很高的并发,体现在同时容纳请求的能力。
全栈程序员站长
2022/11/04
1.4K0
【STM32H7的DSP教程】第30章 STM32H7复数浮点FFT(支持单精度和双精度)
完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第30章 STM32H7复数浮点FFT(支持单精度和双精
Simon223
2021/06/17
1.1K0
【STM32H7的DSP教程】第30章       STM32H7复数浮点FFT(支持单精度和双精度)
【STM32H7的DSP教程】第31章 STM32H7实数浮点FFT(支持单精度和双精度)
完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第31章 STM32H7实数浮点FFT(支持单精度和双精
Simon223
2021/06/17
1.1K0
【STM32H7的DSP教程】第31章       STM32H7实数浮点FFT(支持单精度和双精度)
C库函数手册(ctype.h)
ctype.h函数说明: int isalpha(int ch)  若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isdigit(int ch)  若ch是数字('0'-'9')返回非0值,否则返回0 int isalnum(int ch)  若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')返回非0值,否则返回0 int islower(int ch)  若ch是小写字母('a'-'z')返回非0值,否则返回0 int isupper(int ch) 
用户1215536
2018/02/05
7870
mysql长轮询_ajax的轮询和长轮询
轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接。
全栈程序员站长
2022/11/08
3.9K0
【STM32F407的DSP教程】第31章 STM32F407实数浮点FFT(支持单精度和双精度)
完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第31章 STM32F407实数浮点FFT(支持单精度和
Simon223
2021/06/17
1.7K0
【STM32F407的DSP教程】第31章       STM32F407实数浮点FFT(支持单精度和双精度)

相似问题

精度长双精度比双精度差

14

c++中双精度和长双精度的区别

112

FFTW与长双精度

11

双精度和长整型数字的减法

52

试着访问长双数学宏和长双的精度

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文