2012-02-02 2 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]); 

Logging объект с% @ пытается вызвать [... далее] метод на то, что передается в Вы можете себе представить ужасы, возникающие в памяти приложения, когда он пытается вызвать этот метод на случайное целое число, считая, что это указатель на объект.

+0

Привет, товарищ спасибо за помощь. – stringCode

Смежные вопросы