iOS开发 数组、字典、字符串初始化你真的知道么?

  • 今天突发奇想,要搞一下属性的各个参数混用的情况。

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);

你可能感兴趣的:(iOS开发 数组、字典、字符串初始化你真的知道么?)