Objective c NSMutablearray是否设置为(空)?

Objective c NSMutablearray是否设置为(空)?,objective-c,cocoa-touch,ios4,Objective C,Cocoa Touch,Ios4,所以我在FirstViewController和SecondViewController中有两个视图控制器 NSMutableArray *array; 在FirstViewController中 NSMutableArray *array; 为其创建属性并对其进行合成 在SecondViewController中 NSMutableArray*arraySecond 创建一个属性并将其合成 然后我尝试这样做(在arraySecond设置为类似于b c d的值之后) 我尝试这样做,但当我

所以我在FirstViewController和SecondViewController中有两个视图控制器

 NSMutableArray *array;
在FirstViewController中

 NSMutableArray *array;
为其创建属性并对其进行合成

在SecondViewController中

NSMutableArray*arraySecond

创建一个属性并将其合成 然后我尝试这样做(在arraySecond设置为类似于b c d的值之后)

我尝试这样做,但当我尝试从firstviewcontroller打印阵列时,它被设置为(null)为什么它会这样做?我可以做些什么来修复它

FirstViewController *FV = [[FirstViewController alloc]init];

secondViewController *SV = [[secondViewController alloc]init];

//here create secondArray

[FV SetArray:SV.arraySecond];

如果您合成了arraySecond,那么
[self.arraySecond release]

您正在创建
FirstViewController
的实例,设置
数组的值,然后释放该实例,该实例将取消分配对象。所以所有的努力都白费了。由于这是在
SecondViewController
中,因此我假设此时存在
FirstViewController
,因此您不应该设置
FirstViewController
的新实例的
数组
,而是尝试将其传递给现有实例。由于您已经声明了一个在视图控制器之间共享的属性,我们将使用它

FirstViewController
中实例化
SecondViewController
实例时执行此操作

SecondViewController * viewController = [[SecondViewController alloc] init];

self.array = [NSMutableArray array];
viewController.arraySecond = self.array;

[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
现在,阵列在视图控制器之间共享。不要在其他地方初始化
arraySecond
属性,以便它们都指向同一个对象,并且对
arraySecond
所做的更改对
FirstViewController
实例可见。返回到
FirstViewController
实例后,使用
array
属性访问您添加的值


对象共享的替代方法是委托机制和通知。你也可以调查一下。就目前而言,这应该是可行的。

您是如何进行合成的?@synthesis array@合成阵列秒;AFAIK Obj-C区分大小写,因此您应该注意不要复制
SetArray
,而是使用
SetArray
(注意小写字母s);如果你合成数组,那么你可以使用点语法。否则你必须这样使用。