Objective-C NSString 引用类型

标签 objective-c

我有一个简单的问题。如果我如下所示声明 NSString(ref 类型):

 NSString *johnsMoney = @"200";
    NSString *marysMoney = johnsMoney;

    NSLog(@"Johns Money %@",johnsMoney);
    NSLog(@"Marys Money %@",marysMoney);

    johnsMoney = @"100";
    NSLog(@"Johns Money %@",johnsMoney);
    NSLog(@"Marys Money %@",marysMoney);

产生的输出是这样的:

 Johns Money 200
 Marys Money 200
 Johns Money 100
 Marys Money 200

根据我的理解,当我将 @"100"分配给 johnsMoney 时,它不应该也将 "marysMoney"的值更改为 100,因为 marysMoney 指向 johnsMoney。

更新:

我相信以下示例展示了我最初尝试做的事情:

Dog *dog1 = [[Dog alloc] init];
dog1.name = @"Dog 1";

Dog *dog2 = dog1;

NSLog(@"Dog 1 %@",dog1.name);
NSLog(@"Dog 2 %@",dog2.name);

dog1.name = @"Dog 3";

NSLog(@"Dog 1 %@",dog1.name);
NSLog(@"Dog 2 %@",dog2.name);

最佳答案

johnsMoneymarysMoney 都是 pointers to strings .

当您编写 johnsMoney = @"100" 时,它现在指向不同的字符串。这不会更改仍指向原始字符串的 marysMoney

如果您使用的是 NSMutableString,并且您使用了 [johnsMoney setString:@"100"],那么它会更改基础数据(两个变量仍会更改为该数据)指向)。

关于Objective-C NSString 引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200648/

相关文章:

iphone - 我想像这样将 UILabel 文本 "sunday"显示为大写 "SUN"

ios - MKMapView 不能用 TabBar 全屏

ios - 如何操作 React Native - Native UI 组件的属性?

objective-c - 是否可以通过 IB 指定 UITextField 中的最大字符数

ios - 将 UIImage 从 View Controller 传递到另一个

objective-c - 更改 UINavigationBar 和 UITabBar 的大小后更改查看区域的大小

ios - 打印应用内购买交易收据?

ios - Sprite Kit 中暂停游戏 : Why doesn't this work?

ios - 如何检查 uitextfield 中的 <object returned empty description check>?

ios - UITapGestureRecognizer 在关闭 viewController 后导致崩溃