NSString * a = @"123";
NSString * a1 = [NSString stringWithString:@"123"];
NSString * a2 = [NSString stringWithFormat:@"123"];
NSString * a3 = [[NSString alloc]initWithString:@"123"];
NSLog(@"\n a===%p\n a1===%p\n a2=====%p\n a3====%p",a,a1,a2,a3);
Log:
a===0x103781078
a1===0x103781078
a2=====0x879021054d822492
a3====0x103781078
a,a1,a3用String声明的字符串,初始化的是常量内存区,常量内存区的地址,只要值相同,占用的地址空间是一致的
a 生成字符串时,不会初始化内存空间,使用结束后不会释放内存
a1是autorelease类型,内存由系统释放
a2用Format初始化的字符串,需要初始化一段动态内存空间,必须手动释放
网友评论