我已经设法使用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,我会得到不可变的副本吗? 我是不是想以错误的方式访问这个长度?
答案 0 :(得分:3)
这是因为您尝试使用%@将对象长度记录为对象。它不是一个对象,它是一个整数,所以用%i记录它:
NSLog(@"%i thats data length",[self.data length]);
使用%@记录对象会尝试在传入的内容上调用[... description]方法。您可以想象在尝试在随机整数上调用该方法时应用程序内存中发生的恐怖。它是指向对象的指针。