Memory Model, java Memory Model
NSString * someString = @ "The string ";
// The Memory occupied by objects is always allocated to the heap space, rather than the stack space. You cannot allocate Objective-C objects to stacks.
// NSString stackString; // error: interface type cannot be statically allocated
NSString * anotherString = someString; // there is only one NSString instance. However, there are two variables pointing to this instance, which indicates that two memory blocks are allocated in the current stack frame, the size of each memory can accommodate the next pointer (32-bit architecture-4B, 64-bit architecture-8B ). The values in the two memories are the same, that is, the memory address of the NSString instance.
Figure 1-1 The Memory layout diagram delays an NSString instance allocated to the heap and has two pointers allocated to the stack.