1. 创建不可变 数组、字典、字符串,不管用类方法创建还是对象方法创建,只要是创建空的对象, 发现得到的地址都是一样的,由此可以知道初始化空的对象的时候会生成一个单例,
NSArray *a = [NSArray array]; //0x60000001e3f0
NSArray *b = [NSArray array]; //0x60000001e3f0
NSArray *c = [NSArray array]; //0x60000001e3f0
NSArray *e = [[NSArray alloc] init]; //0x60000001e3f0
NSArray *d = [NSArray array]; //0x60000001e3f0
NSArray *f = [[NSArray alloc] initWithObjects:@"1", nil];//0x60000000f660
NSArray *g = [[NSArray alloc] initWithObjects:@"1", nil];//0x60000000f600
NSLog(@"%p-%p-%p-%p-%p-%p-%p",a,b,c,e,d,f,g);
2. 创建可变 数组、字典、字符串,都会申请不同的内存空间。
NSMutableString *a = [NSMutableString string]; //0x600000244ec0
NSMutableString *b = [NSMutableString string]; //0x600000244b00
NSMutableString *c = [NSMutableString string]; //0x600000244b90
NSMutableString *d = [NSMutableString string]; //0x600000243ed0
NSMutableString *f = [[NSMutableString alloc] init]; //0x6000002431b0
NSLog(@"%p-%p-%p-%p-%p",a,b,c,d,f);
网友评论