目标 C 可变数组

Objective C Mutable Array

提问人:Wesk 提问时间:11/16/2013 最后编辑:Wesk 更新时间:11/16/2013 访问量:434

问:

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

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

NSMutableArray *tableData;

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

[self saveData];

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

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

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

此方法是从 applicationWillTerminate 方法调用的。我认为数组元素对 appDelegate 不可用,这就是为什么计数为 0 的原因?

iOS的 苹果手机 目标-C 阵 列 可变

评论

2赞 Alex Reynolds 11/16/2013
在哪里初始化可变数组?[[NSMutableArray alloc]init]
0赞 user523234 11/16/2013
如何从 AppLegate 获取 listView?
0赞 Matteo Gobbi 11/16/2013
这是内存管理错误。
0赞 Hot Licks 11/16/2013
“我认为数组元素对 appDelegate 不可用,这就是为什么计数为 0?”数组元素在地址可用的任何位置都可用。如何将地址传递给应用委托?
1赞 Hot Licks 11/16/2013
这样看。您正在创建 ListAppViewController 的两个不同实例。它们看起来相同,但却是不同的“盒子”。你放入一个盒子里的任何东西都不会神奇地出现在另一个盒子里。

答:

2赞 Wain 11/16/2013 #1

applicationWillTerminate基本上从来不叫。您需要在应用程序进入后台时触发保存(退出活动)。

评论

0赞 Wesk 11/16/2013
当应用程序关闭时,终止似乎按预期运行。问题是它似乎无法正确访问数组。
2赞 TotoroTotoro 11/16/2013 #2

执行此操作时,将创建视图控制器的新实例。如果目的是保存您在该视图控制器中的任何数据,则此操作将不起作用(因为您没有访问您的应用一直在使用的实例)。ListAppViewController* listView = [[ListAppViewController alloc] init]

以下是您可以做自己想做的事的方法:

  1. 从应用委托的方法发布通知applicationWillTerminate
  2. 订阅该通知ListAppViewControllerList
  3. 调入通知处理程序。[self saveData]