NSString
s также являются объектами. Они идут по тем же правилам управления памятью. Если вы грешите против этих правил, вы получите указатель на недопустимую память, и он будет выглядеть как «недействительные» данные.
Например:
myString = [NSString stringWithString:@"foo"];
Это создаст NSString*
с включенным авто-выпуском. Когда вы присваиваете его ивару, этот пул автоматического выпуска скоро выскочит, установив счет сохранения в 0 и dealloc
, пока у вас еще есть ссылка на него!
порочная.
Вместо этого либо сохраните его, либо используйте:
myString = [[NSString alloc] initWithString:@""];
Возвращает ссылку на владельца. Не забудьте [myString release];
в dealloc
.
Это всего лишь один пример / случай плохого управления памятью. Прочитайте документы о том, как правильно управлять жизненным циклом вашего объекта. Действительно.