Мне нравится этот пример, который на данный момент, не учитывает проверку, которую Вы могли добавить в в то время как блок:
ifstream iFile("input.txt"); // input.txt has integers, one per line
int x;
while (iFile >> x)
{
cerr << x << endl;
}
Не уверенный, насколько безопасный это...
Альтернативный вариант: [NSString stringWithFormat: @ "% @ \ n", soapResults]
, даже если логика такая же!
Однако даже в В случае stringByAppendingString он возвращает новую строку, но не меняет цель, поэтому вам необходимо назначить новую строку новому экземпляру класса NSString.
Объект, который вы возвращаете из -stringByAppendingString:, автоматически освобождается. Вы должны сохранить его, если хотите, чтобы он сохранялся. Если вы его не сохраните, вы получите исключение памяти в следующий раз, когда попытаетесь получить к нему доступ.
Простой способ убедиться, что это произошло, - объявить «soapResults» как свойство и синтезировать для него аксессоры. .
Вероятно, у вас возникнут проблемы с управлением памятью, soapResults, вероятно, является случайным указателем на объект, который был освобожден. Трудно сказать, не увидев большего количества кода, но проверка того, где изначально был размещен объект, - хорошее начало.
Например, если он был выделен с помощью вызова [NSString stringWith ...], то он автоматически освобождается по умолчанию, т.е. он будет выпущен в конце цикла выполнения, и вы должны сохранить его, если хотите удержать его.