IOS 视图控制器之间的数据

IOS Data Between View Controllers

我有一个带有 2 个视图控制器 A 和 B 的导航控制器。

A和B都有一个属性

@property (strong, nonatomic) NSString *string;

字符串在控制器 A 中创建并传递给控制器​​ B

ViewControllerB.string = self.string;
[self.navigationController pushViewController:ViewControllerB];

在视图控制器 B 中,字符串被修改,当我弹出到视图控制器 A 时,字符串的值没有改变。

既然它们都持有对它的强引用,难道不应该在两个视图控制器中更改字符串吗?

我是不是漏掉了什么?

In View Controller B, string is modified

这是不可能的,因为您使用的是 NSString,而不是 NSMutableString。如果在 ViewControllerB:

内替换它
self.string = @"some other string";

然后您将 ViewControllerBstring 属性 设置为引用该新字符串,但对原始字符串的其他引用不受影响。

如果你真的想让两个视图控制器修改同一个字符串,使用NSMutableString。但是共享可变状态可能不好。相反,考虑使用中介 class(如数据源)或 ViewControllerB 的委托模式来传递 ViewControllerA 更新的字符串。