iOS 指针

可变对象与不可变对象

NSMutableString *mutaStr = [[NSMutableString alloc] initWithFormat:@"1"];
[mutaStr insertString:@"2" atIndex:0];
NSLog(@"mutaStr = %@", mutaStr); // mutaStr = 21
    
mutaStr = @"123";
[mutaStr insertString:@"4" atIndex:2]; // crash

mutaStr 声明的是一个可变类型,mutaStr = @"123"; 将其指向了一个不可变的类型,由于 iOS 动态的特性,因此在编译时没问题;但是在运行时会 crash,因为 mutaStr 此时已经指向了一个不可变的对象

类似的还有 NSArray

NSMutableArray *mutaArray = [[NSMutableArray alloc] initWithObjects:@"1", @"2", nil];
[mutaArray addObject:@"3"];
    
mutaArray = @[@"4", @"5"];
[mutaArray addObject:@"5"]; // crash

你可能感兴趣的:(iOS 指针)