Objective C可变阵列

时间:2013-11-16 00:16:16

标签: ios iphone objective-c arrays mutable

我在程序中使用NSMutableArray时遇到问题。

我的视图控制器中包含一个数组,在整个程序过程中添加了字符串。该数组在viewController中声明。

NSMutableArray *tableData;

我试图在同一个视图控制器中运行一个方法,将数组元素保存到表中。当通过视图控制器访问该方法时,如下所示,它可以正常工作

[self saveData];

当我通过app委托调用相同的saveData方法时,该数组似乎不包含任何数据。

listView是appDelegate中的对象,用于引用包含save方法的视图控制器。

ListAppViewController* listView = [[ListAppViewController alloc] init];
[listView saveData];

从applicationWillTerminate方法调用此方法。我认为appDelegate无法使用数组元素,这就是为什么计数为0?

2 个答案:

答案 0 :(得分:2)

applicationWillTerminate基本上从未被调用过。当应用程序进入后台时,您需要触发保存(重新激活)。

答案 1 :(得分:2)

执行ListAppViewController* listView = [[ListAppViewController alloc] init]时,您将创建视图控制器的新实例。如果打算保存您在该视图控制器中的任何数据,这将无效(因为您没有访问您的应用程序一直在使用的实例)。

以下是你可以做你想做的事情:

  1. 发布应用代表applicationWillTerminate方法
  2. 的通知
  3. ListAppViewControllerList
  4. 中订阅该通知
  5. 在通知处理程序中调用[self saveData]