社区首页 >问答首页 >CFStreamCreateBoundPair流丢失缓冲区大小较小的数据

CFStreamCreateBoundPair流丢失缓冲区大小较小的数据
EN

Stack Overflow用户
提问于 2013-05-17 04:28:43
回答 1查看 534关注 0票数 1

我正在尝试用Objective-C中的libxml2创建一个流html解析器。我有一个下载数据的NSURLConnection,我用CFStreamCreateBoundPair在NSInputStream和NSOutputstream中创建了一个10字节的小缓冲区。当从NSURLConnection接收到数据时,我将其写入输出流。当接收的数据量大于缓冲区大小时,会出现剩余数据丢失的情况。这是应该发生的吗?根据我的理解,我认为数据将被排队,并以缓冲区大小的块写入输入流。

CFStreamCreateBoundPair Reference

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-20 20:32:54

您需要确保接收到的区块中的所有数据最终都写入到流中。

您可以通过委托方法中的一个简单循环来实现这一点,在此循环中,您可以连续写入接收到的块的一部分,直到它完全写入到流中。但是,这可能会导致正在运行委托的线程发生不确定的阻塞:如果使用者没有准备好使用更多字节,则输出流将在尝试写入更多数据时阻塞。

或者,您可以将NSData对象异步分派到一个队列,在该队列中,一个块正在执行循环,并在循环完成之前写入所有数据。但是,如果使用者速度慢且数据很大,这可能会导致系统耗尽内存-因为所有NSData都在分派队列中,直到数据块完成。

这两种方法各有优缺点。我倾向于选择第一种方法,因为没有内存问题,并且连接将缓冲传入的字节,直到它停止接收更多的字节。

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

https://stackoverflow.com/questions/16601414

复制
相关文章
java数组删除元素_java中删除 数组中的指定元素方法[通俗易懂]
java中删除 数组中的指定元素要如何来实现呢,如果各位对于这个算法不是很清楚可以和小编一起来看一篇关于java中删除 数组中的指定元素的例子。
全栈程序员站长
2022/09/22
8.2K0
怎样从数组中删除给定元素_java数组包含某个元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169528.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
5.1K0
怎样从数组中删除给定元素_java数组包含某个元素
删除数组中某个指定元素的值_如何删除数组中的元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169504.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
12.6K0
vue删除数组中指定元素_如何删除数组中的元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169518.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
7.8K0
js算法之删除数组中的第一个元素
思路:先用slice(0)做出一个新的数组。 然后是从下标0开始删除一个元素,并且输出.
贵哥的编程之路
2021/03/26
3.1K0
js算法之删除数组中的第一个元素
PHP 如何返回数组中第一个通过测试的元素
PHP 的 array_filter() 函数可以通过回调函数过滤数组的元素,但是返回的是过滤后的数组。
Denis
2023/04/14
2.8K0
js删除数组中的一个元素_js数组包含某个元素
1. 不可以使用 delete 方式删除数组中某个元素,此操作会造成稀疏数组,被删除的元素的为位置依然存在为empty,且数组的长度不变
全栈程序员站长
2022/11/10
11.7K0
用于从数组中删除第一个元素的 Python 程序
为了删除数组的第一个元素,必须考虑的索引为 0,因为任何数组中第一个元素的索引始终为 0。与从数组中删除最后一个元素一样,从数组中删除第一个元素可以使用相同的技术进行处理。
很酷的站长
2023/08/11
2760
用于从数组中删除第一个元素的 Python 程序
java中输出数组元素的方法[通俗易懂]
Array.toString(要输出的数组名): 返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号分开。 方法三:
全栈程序员站长
2022/11/07
2.7K0
[javascript] js删除数组中的元素
arr.splice(start,delete_length) 这种方式数组长度相应改变,原来的索引也相应改变。 splice()删除后返回的是删除的元素。 另外splice()还可以添加,替换数组元素。
唯一Chat
2021/08/05
11.4K0
[随缘一题]排序数组中的单个元素
因为我发现每日一题太难了,,,总会出现一些加班已经很累了(懒得不想动)的时候,而且周末有事多做两道题都叫做同一天的每日一题也让我这个强迫症贼难受.
呼延十
2019/07/01
2.2K0
php如何获取数组的第一个元素
获取数组的第一个元素 在这里,我们将介绍如何使用array_shift和reset函数来检索数组的第一个元素。
用户8099761
2023/05/11
2K0
es6删除数组指定元素_如何删除数组中的元素
如图,这个数组里面有三个元素,现在要删掉这个id是24的元素,那我们代码就应该这么写
全栈程序员站长
2022/09/22
6.8K0
es6删除数组指定元素_如何删除数组中的元素
jquery判断数组中是否包含某个元素的值_java判断元素是否在数组中
如果arry数组里面存在”C#” 这个字符串则返回该字符串的数组下标,否则返回(不包含在数组中) -1
全栈程序员站长
2022/11/02
5.8K0
char数组中除去某个元素
1 /* 2 本程序说明: 3 4 char数组中除去某个元素(其实就是strcpy源码的变形) 5 6 */ 7 #include <iostream> 8 #include <cassert> 9 #include <cstring> 10 using namespace std; 11 12 char * remove_char(char* src, int length, char c){ 13 char *dst=src; 14 char *res=dst;
xiaoxi666
2018/10/29
1.5K0
js判断数组中是否包含某个指定元素的个数_js 数组包含某个元素
indexOf()完整语法: array.indexOf(item,start)
全栈程序员站长
2022/11/02
11.3K0
c语言从数组中删除指定元素_c语言数组添加元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169514.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
5.8K0
c语言从数组中删除指定元素_c语言数组添加元素
封装数组之实现在数组中查询元素和修改元素
前言:在上一小节中,我们已经对如何往数组中添加一个元素的方法进行了编写,此节中我们就如何查询出数组中元素与修改元素的方法进行编写。
wfaceboss
2019/04/08
1.1K0
最长的连续元素序列的长度
给定一个无序的整数类型数组,求最长的连续元素序列的长度。 例如: 给出的数组为[100, 4, 200, 1, 3, 2], 最长的连续元素序列为[1, 2, 3, 4]. 返回这个序列的长度:4 你需要给出时间复杂度在O(n)之内的算法
名字是乱打的
2021/12/22
6800
最长的连续元素序列的长度
JavaScript数组求和_js获取对象数组的第一个元素
您如何找到其元素的总和?好吧,解决方案是一个array.reduce()方法。Array.prototype.reduce()函数可用于遍历数组,将当前元素值添加到先前项目值的总和中。
全栈程序员站长
2022/11/10
6.9K0

相似问题

随机化数组元素

50

将数组中的元素随机化?

40

数组中连续元素的组合

12

如何在过滤元素(不是过滤数组,然后随机化元素)中随机化数组?

10

数组连续元素和

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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