Подтвердить что ты не робот

Должен ли я освободить NSString, сгенерированный с помощью @ "..."?

Если я создаю NSString, используя приведенный ниже код, нужно ли мне освобождать someString?

NSString *someString = @"somestring";
4b9b3361

Ответ 1

Нет, это компиляционный постоянный строковый объект, поэтому его не нужно выпускать. Это моральный эквивалент char * c = "hello world" - где мир hello world находится в глобальных данных, и вы назначаете адрес этих данных указателю c.

Ответ 2

Если вы создали объект с помощью вызова метода, который содержит alloc, retain или copy, или начинается с new (NARC = "narc" ), вы отвечаете за releasing объект. Если это не так, вы можете игнорировать объект.

Итак, в случае строк:

NSString * myString = @"This is a string";

Я не вижу там вызова метода NARC, поэтому вы не отвечаете за его освобождение. Это действительно так просто.

Ответ 3

Нет, поскольку это постоянная строка времени компиляции, вам не нужно ее выпускать. Фактически, это приведет к ошибке во время выполнения.

Ответ 4

Я проверил этот случай отличается от NSString *someThing = @"someThing"; они должны освобождать urlString из-за

[[NSString alloc] initWithFormat:@"%@%@", baseURLString, queryTerm];

В любом месте, где вы используете alloc/init, вы его не выпускаете.

Ответ 5

Итак, проверьте, что делает Apple в разделе "Вставить данные с помощью запроса POST" на следующую ссылку :

Я вижу a [urlString release];, почему?

Ответ 6

Если это постоянная строка времени компиляции, не было бы необходимости ее сохранять. Правильно ли это?