2012-02-02 36 views
0

的長度我已成功地NSInputStream和讀取一些數據來NSMutableData對象。我能夠將這些數據放入字符串和NSLog中,但是當我嘗試訪問它的長度時(我假設這是它的大小),我的應用程序崩潰了。獲取NSMutableData

 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上調用副本我會得到不可變的副本嗎? 我是否試圖以錯誤的方式訪問長度?

+1

是,'copy'給你一個不可改變的對象。 'mutableCopy'給你一個可變的對象。 – edc1591 2012-02-02 15:46:56

+0

謝謝。關於爲什麼我可以訪問我的數據長度的任何想法。我試圖做一個NSData的副本,並調用長度應用程序仍崩潰 – stringCode 2012-02-02 15:50:53

回答

3

這是因爲你嘗試登錄的長度爲使用%@的對象。這不是一個對象,它是一個整數,所以用%我登錄替代它:

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

記錄與%@的對象試圖調用無論是在通過了關於[...原文]方法你可以想像當它嘗試在隨機整數上調用該方法時發生在應用程序內存中的恐怖事件,認爲它是一個指向對象的指針。

+0

乾杯隊友謝謝你的幫助。 – stringCode 2012-02-02 16:05:01