Должен ли я освободить NSString, сгенерированный с помощью @ "..."?
Если я создаю NSString, используя приведенный ниже код, нужно ли мне освобождать someString?
NSString *someString = @"somestring";
Ответ 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 из-за