0

我已经设法 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 上调用副本,我会得到不可变副本吗?我是否以错误的方式访问长度?

4

1 回答 1

3

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

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

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

于 2012-02-02T15:54:54.157 回答