Задаваясь вопросом, являетесь ли вы владельцем объекта, спросите себя:
Использует ли метод, который я использовал для создания этого объекта ...
- начинаются с
new
?
- начинаются с
alloc
?
- содержит
copy
?
- равно
retain
?
Если вы можете ответить «Да» на любой из них, то вы несете ответственность за вызов release
или autorelease
для возвращаемого объекта. (Обратите внимание, что правила для базовых базовых объектов немного отличаются. Также обратите внимание, что все, что прямо указано в документации, противоречит этому, побеждает. Документация всегда заменяет рекомендации)
В случае вашей строки ответы на все ваши вопросы - «нет», поэтому вы не несете ответственности за объект. Постоянные строки (в стиле @"foo"
) жестко запрограммированы в двоичном файле приложения, и не может быть освобождено. Это, однако, деталь реализации. Пока вы будете следовать правилам управления памятью, у вас все будет хорошо!