2012-02-02 10 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

+0

ありがとうございます。なぜ私のデータの長さにアクセスすることができますかについての任意の考え。私はそれのNSDataのコピーを作成しようとしていると呼び出す長さのアプリケーションがまだクラッシュ – stringCode

答えて

3

これは、%@を使用してオブジェクトとして長さを記録しようとしているためです。それは整数ですが、オブジェクトではありませんので、私が代わりに%でそれをログに記録します。%@が渡されているものの[...説明]メソッドを呼び出そうとして

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

は、オブジェクトのロギングあなたが想像することができます。ランダムな整数でそのメソッドを呼び出そうとしたときにアプリケーションメモリ内で起こる恐怖。オブジェクトへのポインタだと思っています。

+0

乾杯仲間は助けてくれてありがとう。 – stringCode

関連する問題