数组swift值类型和oc引用类型的理解
1.值类型 两块内存
var arr1 = ["1", "2", "3"] var arr2 = arr1 arr1.append("4") print(arr2)
结果
["1", "2", "3"]
2.引用类型 一块内存
NSMutableArray *arr1 = [NSMutableArray arrayWithArray:@[@"1", @"2", @"3"]]; NSMutableArray *arr2 = arr1; [arr1 addObject:@"4"]; NSLog(@"arr2: %@", arr2);
结果
arr2: ( 1, 2, 3, 4 )
3. mutableCopy 两块内存 深copy
NSMutableArray *arr1 = [NSMutableArray arrayWithArray:@[@"1", @"2", @"3"]]; NSMutableArray *arr2 = [arr1 mutableCopy]; [arr1 addObject:@"4"]; NSLog(@"arr2: %@", arr2);
结果
arr2: ( 1, 2, 3 )
4. copy 两块内存 深copy
NSMutableArray *arr1 = [NSMutableArray arrayWithArray:@[@"1", @"2", @"3"]]; NSMutableArray *arr2 = [arr1 copy]; [arr1 addObject:@"4"]; NSLog(@"arr2: %@", arr2);
结果
arr2: ( 1, 2, 3 )
备注:只有对不可变的(NSString、NSArray、NSDictionary、NSSet)进行copy 是浅复制,其他都是深复制。或者带mutable的都是深复制。浅复制一块内存,深复制两块内存。
    在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号