【问题标题】:Getting length of NSMutableData获取 NSMutableData 的长度
【发布时间】:2012-02-02 15:45:27
【问题描述】:

我已经设法 NSInputStream 并将一些数据读取到 NSMutableData 对象。我可以将这些数据放入字符串和 NSLog 中,但是当我尝试访问它的长度(我假设这是它的字节大小)时,我的应用程序崩溃了。

        NSString *stringData=[[NSString alloc]initWithData:self.data encoding:NSUTF8StringEncoding];
        NSLog(@"%@ thats data",stringData);//logs out content of data
        NSLog(@"%@ thats data length",[self.data length]);//crashes

所以我的问题是,如果我在 NSMutableDate 上调用副本,我会得到不可变副本吗? 我是否以错误的方式访问长度?

【问题讨论】:

  • 是的,copy 为您提供了一个不可变对象。 mutableCopy 给你一个可变对象。
  • 谢谢。关于为什么我可以访问我的数据长度的任何想法。我尝试制作它的 NSData 副本并调用 length 应用程序仍然崩溃

标签: iphone ios nsmutabledata


【解决方案1】:

这是因为您尝试使用 %@ 将长度记录为对象。它不是一个对象,它是一个整数,所以用 %i 代替它:

NSLog(@"%i thats data length",[self.data length]);

使用 %@ 记录一个对象会尝试对传入的任何内容调用 [... description] 方法。您可以想象当应用程序内存尝试在随机整数上调用该方法时发生的恐怖,思考它是一个指向对象的指针。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多