I am somewhat confused about when things are allocated on the heap (and I need to release them) and when they are allocated on the stack (and I don\'t need to relese them).
There are no stack allocations of objects in Objective-C (Blocks are a different case that I'm not going to get into here)
NSString *user = @"DEFAULT";
That allocates a NSConstantString object in constant memory, not on the stack.