initWithData和NSString的initWithBytes之间的区别

时间:2012-12-06 12:11:40

标签: ios nsstring byte nsdata

我对NSString

的以下方法的使用感到困惑
  1. initWithData:encoding:

      

    返回通过将给定数据转换为初始化的NSString对象   使用给定编码的Unicode字符。

  2. initWithBytes:length:encoding:

      

    返回一个初始化的NSString对象,该对象包含给定编码中解释的给定字节缓冲区中给定数量的字节。

  3. 它们的用法如下:

    NSMutableData *someData = //some data;
    NSString *someString = nil;
    
    • someString= [[NSString alloc] initWithData:someData encoding:NSUTF8StringEncoding];

    • someString=[[NSString alloc] initWithBytes:[someData mutableBytes] length:[someData length] encoding:NSUTF8StringEncoding];

    NSData类是字节缓冲区的包装器,那么这些类似方法之间的区别是什么。请帮助我理解其中的差异。

1 个答案:

答案 0 :(得分:3)

好吧,你可能有一些尚未包含在NSData对象中的原始字节。在这种情况下,您可以使用initWithBytes:length:encoding:而无需先将其包装。