- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题如下。我想将 NSString 封装在 NSMutableData 对象中。但我想与其他项目一起做,而不是先将它封装到 NSData 中。毕竟它只是字节,不是吗?
我最终的 NSMutableData 对象看起来像这样
[header | stringLength | NSString]
其中 header
是一个字符,stringLength
是一个无符号短整型。我这样构建我的数据包
unsigned short stringLength = myString.length;
NSMutableData* nData = [NSMutableData dataWithBytes:(const void*)&header length:sizeof(char)];
[nData appendBytes:(const void*)&dataLength length:sizeof(unsigned short)];
[nData appendBytes:(const void*)myString length:stringLength];
然后我会通过 gkSession 发送它,在另一端我会提取字符串长度,然后提取字符串本身:
NSString* temp = [NSString alloc];
[data getBytes:(void*)&temp range:NSMakeRange(sizeof(char)+sizeof(unsigned short), stringLenght)];
出于某些原因,这让我无法访问内存。我怀疑 myString.length
没有完全按照我的预期进行。你有什么提示吗?提前致谢。
最佳答案
此行不正确:
[nData appendBytes:(const void*)myString length:stringLength];
这是编码底层 NSString
结构的第一部分(大于 stringLength
)。
你的意思是:
[nData appendBytes:[myString UTF8String]
length:[myString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
length
是字符数。这可以大大小于多字节字符的字节数。
附带说明:如果您可以将长度缩短到 1 个字节 (0-255),则该编码称为 Pascal 字符串,并且 CFString
可以本地处理该编码(请参阅 CFStringGetPascalString()
)。不是您通常想做的事情,而是有趣的事情。它特别适用于 CFStringCreateWithPascalStringNoCopy()
,因为您可以完全避免内存复制操作。这主要用于遗留支持,我不会跳过任何障碍来使用它,但有时它很方便。
关于iphone - NSString 转换为 NSMutableData 而不转换为 NSData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11244378/
我正在将一个大文件读入 NSMutableData 对象。 var lBuffer : NSMutableData = try NSMutableData(contentsOfFile: pFileP
我正在我的应用程序中进行 JSON 解析,当我使用 responseData = [NSMutableData data]; 它在 [responseData setLength:0] 上崩溃; -
我在函数中使用下面提到的行 NSMutableData *data = [[NSMutableData alloc] init]; 我很快就调用了这个函数(例如 100 次)。所以我的问题是,最初它
我有一个用于连接 httprequests 的类。我收到“NSMutableData”的内存泄漏,尽管我在连接对象的“didFailWithError”和“connectionDidFinishLoa
我使用下面所示的代码下载了该文件。然后我尝试将 NSMutableData 变量保存到文件中,但是,该文件未创建。我究竟做错了什么?我需要将 NSMutableData 转换为 NSString 吗?
我在使用 NSMutableData 时遇到一个问题。 我定义了一个 NSMutableData *receivedData,并尝试将多个 NSData* 数据复制到 receivedData。我刚刚
我的应用程序从服务器获取一些json数据,并使用NSMUtableData对象存储这些数据。 但是调试器报告以下错误: [NSCFString setLength:]: unrecognized se
我正在尝试从响应中获取数据。 我正在使用NSURLConnectionDelegate,NSURLConnectionDataDelegate。 该项目使用ARC。 @interface MainMe
我正在尝试将图像上传到工作正常的 yFrog,但我只想从响应中获取 URL。当我使用 NSURLConnection 方法时 - (void) connectionDidFinishLoading:(
您好,我正在尝试创建一个我想通过网络发送到服务器的数据包,我几乎已经对数据包进行了排序,但是它缺少一个长度标识符,我需要在我的方法结束时计算它并添加放入数据包。 数据包结构是这样的 前导值标识符 (U
让我开始说吧,我是 iOS/Xcode 编程的新手,所以我什至不知道该问什么。我正在尝试向应用程序添加一个静态库,但我以崩溃告终。库包有一个.h 文件和一个.a 文件。我正在询问有关如何继续解决问题的
我将如何附加这个二进制字符串 111000111000111111000111000111 到包含 png 的 NSMutableData 对象(NSMutableData *dataForPNGFi
这个问题已经有答案了: 已关闭10 年前。
在我的程序中,我有一个 NSMutableData 变量,用于收集来自 http://www.nhara.org/scored_races-2013.htm 的信息。 .大约第三次从网站获取信息后,当
我正在尝试快速将一个字节附加到 NSMutable 数据变量,我正在寻找一种更简单的方法。相关的 Objective-C 代码是: NSMutableData *data = [[NSMutableD
NSMutableData *requestData = (NSMutableData*)[request responseData]; 返回 “[{JSON_STRING}]” 所以我想去掉“[”/
我有一个被多次调用的函数,它创建数据通过 tcp 发送到服务器。我想我在某个地方丢失了数据。 我想知道什么是正确的方法: 在程序开始时使用finalData=[[NSMutableData alloc
我正在尝试通过资源库上传一个大小为 100MB 的视频。但是当我尝试使用 -(NSUInteger)getBytes:(uint8_t *)buffer fromOffset:(long long)o
我使用 NSMutableData 对象来存储表示系列数据的 32 字节结构列表。这些系列可能会被扩展、添加、对齐等。为了节省不必要的对象分配,我尝试将字节扩展并附加到现有对象,而不是分配新对象。 我
我希望能够确定 NSMutableData 实例中的字节数是否等于零。我该怎么做? 最佳答案 简单: if([data length] == 0) { //do something } 其中 da
我是一名优秀的程序员,十分优秀!