NSString的存储问题

 1.format 方法:
 1>.如果字符串字节数小于12,一般存在栈区。  ==地址和值都不可变。
 2>.如果大于12,存在堆区。  ==地址可变,值不可变。
 
 2.initWithString和 stringWithString 方法:
 1>.如果原字符串存在于常量区,则该字符串指向原字符串的常量区地址。==地址和值都不可变。
 2>.如果原字符串存在于堆区,则该字符串指向原字符串的堆区地址。==地址可变,值不可变。
 3>.如果原字符串在栈区,则该字符串会在堆区开辟新的空间。==值不可变,地址可变。
 
 可变不可变的只是值,跟地址没有关系。如果copy的是栈区字符串,会在堆区开辟新空间。相当于深拷贝。可变字符串用 copy 也是深拷贝。



你可能感兴趣的:(NSString)