Exp*_*ing 4 objective-c nsstring ios
我为下面的代码片段获取了相同的内存地址
NSString *str = @"2";
NSArray *arr = [NSArray arrayWithObjects:@"1", str, @"3", @"4", @"5", @"6", nil];
NSString *strTest = @"6";
strTest = @"2";
NSLog(@"object %x", [arr objectAtIndex:1]);
Run Code Online (Sandbox Code Playgroud)
对象"str","strTest"和"log print"给出相同的地址,虽然我已经声明了不同的实例NSString然后它是如何发生的.请有人让我知道.这对我来说很奇怪.
str并且NSLog应该提供相同的内存地址,因为它是同一个对象,并没有新的分配作出.strTest变量的两行可能由编译器优化为单个NSString *strTest = @"2",并且由于NSString是不可变的,因此保存内存空间并将其指向@"2"可执行文件数据段中分配的相同字符串没有问题.
| 归档时间: |
|
| 查看次数: |
853 次 |
| 最近记录: |