Нужно ли выпускать строку NSString, созданную с помощью @ "..."? - PullRequest
17 голосов
/ 27 марта 2009

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

NSString *someString = @"somestring";

Ответы [ 6 ]

20 голосов
/ 27 марта 2009

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

15 голосов
/ 03 сентября 2010

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

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

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

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

2 голосов
/ 27 марта 2009

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

1 голос
/ 03 сентября 2010

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

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

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

0 голосов
/ 22 ноября 2011

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

0 голосов
/ 24 февраля 2010

Итак, пожалуйста, проверьте, что Apple делает в разделе «Вставка данных с помощью POST-запроса» по следующей ссылке :

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...