У меня есть следующий фрагмент кода:
NSString * tempString = [[NSString alloc] initWithFormat: @ "% d /% d /% d", день, месяц, год];
dateString = tempString;
[выпуск tempString];
NSLog (@ "сохранить счет для строки данных и строки Tempstring% d и% d", [dateString retainCount], [tempString retainCount]);
NSLog (@ "% @ and% @", dateString, tempString)
Теперь он печатает счет сохранения tempString как 1 (также dateString retain count = 1), даже если я освобождаю его в строке ранее. Также оператор NSlog, печатающий две строки, ничего не отображает. Я предполагаю, что это потому, что, поскольку в моем коде dateString указывает на местоположение tempString, и tempString был освобожден, NSlog не сможет распечатать строку. Но тогда почему счетчик хранения tempString = 1?
Если я заменю строку
dateString = tempString;
с
dateString = [NSString stringWithString: tempString];
тогда оператор NSlog печатает значения dateString и tempString и отображает их счетчики сохранения как 1. Как значение tempString печатается, когда я освобождаю его в предыдущей строке?