Управление памятью Objective-C: вам нужно освобождать строковые литералы? - PullRequest
0 голосов
/ 06 июля 2010

тебе нужно выпустить что-то очень простое?

NSString *a = @"Hello";

//[a release];  ?

Я из мира Java / C #, и меня смущает вопрос, когда что-то должно быть выпущено / сохранено.

Ответы [ 2 ]

2 голосов
/ 06 июля 2010

Нет. Вам нужно только release объекты, которые вы init / alloc сами или переменные вашего экземпляра в вашем методе dealloc класса.

1 голос
/ 06 июля 2010

Нет, вам не нужно освобождать постоянную строку NSString, хотя это не вызывает никаких проблем, если вы это делаете. Постоянные строки являются частным случаем системы управления памятью. Поскольку их содержимое известно во время компиляции, оно статически определяется в самом двоичном файле приложения, поэтому его никогда не нужно выделять или освобождать во время выполнения. По этой причине его методы сохранения и освобождения являются noops.

Это верно только для констант NSStrings (строк, начинающихся с @) и их двоюродного брата с бесплатными мостами, константы CFStrings (определенной с помощью макроса CFSTR ()).

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