Objective-C в этом отношении прост.
Все объекты Objective-C всегда выделяются в куче.
Или, по крайней мере, должны рассматриваться как включенныекуча.
Для:
NSString *user = @"DEFAULT";
Строковый объект технически не находится в куче, но вполне может быть.А именно, он генерируется компилятором и является частью двоичного файла вашего приложения.Его не нужно сохранять и освобождать, потому что класс (NSCFConstantString
, IIRC) переопределяет retain / release / autorelease, чтобы эффективно ничего не делать.следует прочитать (и перечитать) Руководство по управлению памятью Objective-C .
(есть еще одно исключение, но это довольно эзотерическая деталь: блоки начинаются в стеке,может Block_copy () передать их в кучу. Блоки также являются объектами Objective-C, но это редко предоставляется при использовании.)