1

我有很多视图控制器,并且都使用相同的类(视图控制器)。

在 ViewController.m 我有这个代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    pedidoNomeArray = [[NSMutableArray alloc] init];
    pedidoValorArray = [[NSMutableArray alloc] init];
}

当我转到 2 号视图控制器时,我的数组 pedidoNomeArray 和 pedidoValorArray 为空。

我必须做什么才能在我的所有视图控制器中使用相同的数组?

谢谢

4

1 回答 1

1

一个原因可能是您没有使用 ARC。在这种情况下,您将新初始化的数组直接分配给 ivar,即不使用 setter。在这种情况下,数组不会被保留,并且会在您的应用程序进入运行循环时立即释放。因此,如果您不使用 ARC,请pedidoNomeArray = [[[NSMutableArray alloc] init] retain];改用。但是你真的应该使用 ARC,因为它避免了大多数常见的内存管理问题。

编辑(由于您的评论):
现在在我看来,您需要的是根据MVC 软件架构模式的数据模型。您的数据存储在一个独立的对象中,并且您的两个视图控制器都引用了该对象。包含“全局数组”的数据模型可以在您的应用程序委托或根视图控制器中实例化,这是有争议的,示例和讨论请参见此处。我希望这有帮助。

于 2013-09-18T05:14:28.420 回答