Objective c 将数组从一个视图添加到另一个视图并保留值

Objective c 将数组从一个视图添加到另一个视图并保留值,objective-c,ios,cocoa-touch,nsmutablearray,Objective C,Ios,Cocoa Touch,Nsmutablearray,我有四个视图,有四个数组。只要我从一个视图导航,我就会将该特定数组添加到主数组中 最初,此主阵列没有任何内容,在应用程序使用“init”方法运行时分配。它没有视图,是来自NSObject子类的数组 最后,主数组应该由{viewarray1、viewarray2、viewarray3、viewarray4}组成 导航到下一个视图时,每个阵列都会添加到主阵列中 那么,我的实现中有什么错误吗?在init方法中分配masterArray可以吗?每次我将一个对象添加到masterArray,我将NSLog

我有四个视图,有四个数组。只要我从一个视图导航,我就会将该特定数组添加到主数组中

最初,此主阵列没有任何内容,在应用程序使用“init”方法运行时分配。它没有视图,是来自
NSObject
子类的数组

最后,主数组应该由{viewarray1、viewarray2、viewarray3、viewarray4}组成

导航到下一个视图时,每个阵列都会添加到主阵列中

那么,我的实现中有什么错误吗?在
init
方法中分配
masterArray
可以吗?每次我将一个对象添加到
masterArray
,我将
NSLog
它并显示
(null)

如何让主数组保留整个应用程序的值

有关代码的一些信息

我在另一个类中用
-(init)
方法初始化主数组

masterArray = [[NSMutableArray alloc] init ];
在从另一个视图向MasterArray添加对象时,我引用了该类,并为该类创建了一个对象,并将其添加为
属性
合成
属性。然后我使用

[self.thatClassObject.masterArray addObject:self.viewArray1];

有两种方法可以初始化它,我可以马上想到。首先,可以在app委托中alloc/init数组。这将确保在其他视图有机会添加到它之前创建它


编辑:我认为只有一种方法可以做到这一点,因为Josh Caswell指出了一个很好的事实,类初始化在这种情况下不起作用。你最好在app委托中或者在任何一个视图中首先调用数组的alloc/init。您必须将其引用到其他类中

请发布您的一些代码,您列出的内容目前描述了您试图完成的任务,而不是您为实现它所做的工作。@Perception:代码很简单。我只是引用另一个类中的数组,并尝试向其中添加一个对象。您可能需要查看UINavigationController。它存储了一组推到堆栈上的视图控制器。@Andrew:我不认为我说的是一组视图控制器。它是关于一个数据/值数组。启动时,每个视图中的数据是什么?如果是这样,您可能可以使用属性值从应用程序委托中获取数组。例如,您可以使用
masterArray=[[NSArray alloc]initWithObjects:view1.array、view2.array、view3.array、view4.array、nil]。您需要将数组指定为
@property(非原子,retain)NSArray*数组在每个视图的标题中,然后也进行合成。同样,这只在最初有数组并且它们不是在运行时创建的情况下才起作用。这不起作用——没有实例引用该数组,并且该数组会立即泄漏。另外,你需要这样做。很好。对于注册用户默认信息的字典,类初始化可以很好地工作,但处理方法不同于在不同的类中使用数组。我很高兴你发现了这一点。我将确保编辑它,以便只有应用程序委托选项存在,而不是类初始化。再次感谢你的好球,是的,那节课没起作用。因为尝试引用类,我浪费了很多时间,但在应用程序委托中也不起作用。我必须在应用程序初始化中声明主数组,并使用委托引用它。非常感谢JOSH CASWELL的积极参与。和@Slev::(一如既往)谢谢你,伙计!!只是出于好奇。您认为单例类在这些情况下会有什么帮助?单例类在这种情况下肯定可以工作。我自己从来没有用过,但从我在学习Objective-C时读到的内容来看,它们应该是实现这种目的的一个很好的选择