视图控制器之间的IOS数据

时间:2015-07-14 19:58:08

标签: ios viewcontroller ivar

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

A和B都有属性

@property (strong, nonatomic) NSString *string;

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

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

在View Controller B中,字符串被修改,当我弹出到View Controller A时,字符串的值没有改变。

由于它们都对它有强烈的引用,因此不应在两个View Controllers中更改字符串吗?

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

  

在View Controller B中,字符串被修改

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

self.string = @"some other string";

然后,您要设置ViewControllerB' string属性以引用该新字符串,但对原始字符串的其他引用不会受到影响。

如果您确实希望两个视图控制器都修改相同的字符串,请使用NSMutableString。但共享可变状态可能很糟糕。相反,请考虑使用中间类(如数据源)或ViewControllerB的委托模式来交换ViewControllerA更新后的字符串。