Добавьте новую строку к NSString

Мне нравится этот пример, который на данный момент, не учитывает проверку, которую Вы могли добавить в в то время как блок:

ifstream iFile("input.txt");        // input.txt has integers, one per line
int x;

while (iFile >> x) 
{
    cerr << x << endl;
}

Не уверенный, насколько безопасный это...

7
задан Spanky 9 November 2009 в 08:11
поделиться

3 ответа

Альтернативный вариант: [NSString stringWithFormat: @ "% @ \ n", soapResults] , даже если логика такая же!

Однако даже в В случае stringByAppendingString он возвращает новую строку, но не меняет цель, поэтому вам необходимо назначить новую строку новому экземпляру класса NSString.

16
ответ дан 6 December 2019 в 08:43
поделиться

Объект, который вы возвращаете из -stringByAppendingString:, автоматически освобождается. Вы должны сохранить его, если хотите, чтобы он сохранялся. Если вы его не сохраните, вы получите исключение памяти в следующий раз, когда попытаетесь получить к нему доступ.

Простой способ убедиться, что это произошло, - объявить «soapResults» как свойство и синтезировать для него аксессоры. .

1
ответ дан 6 December 2019 в 08:43
поделиться

Вероятно, у вас возникнут проблемы с управлением памятью, soapResults, вероятно, является случайным указателем на объект, который был освобожден. Трудно сказать, не увидев большего количества кода, но проверка того, где изначально был размещен объект, - хорошее начало.

Например, если он был выделен с помощью вызова [NSString stringWith ...], то он автоматически освобождается по умолчанию, т.е. он будет выпущен в конце цикла выполнения, и вы должны сохранить его, если хотите удержать его.

0
ответ дан 6 December 2019 в 08:43
поделиться