我已经在appdelegate中创建了一个可变数组。我试图在另一个应用程序中检索该可变数组的值。但是在那时它崩溃了。
以下是我在appdelegate中声明的代码:

savedLocation = [[NSMutableArray alloc] init];
 savedLocation = [[NSMutableArray arrayWithObjects:
       [NSNumber numberWithInteger:0],
       nil] retain];


下面是我尝试通过appdelegate访问另一个应用程序中的数组值的代码:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
 NSInteger selection = [[appDelegate.savedLocation objectAtIndex:0] integerValue];


但是它崩溃于:

NSInteger selection = [[appDelegate.savedLocation objectAtIndex:0] integerValue];

请告诉我它崩溃的原因以及正确的方法。

最佳答案

如果您确实有2个不同的Objective-C应用程序正在运行,请记住,每个应用程序都有其自己的[UIApplication sharedApplication]。如果我正确理解了您的问题,则说明您可以使用此机制在应用程序之间传递信息,而事实并非如此。每个应用程序都有其自己的sharedApplication和相应的应用程序委托,并且将无法看到其他应用程序的成员。

由于您使用的是UIApplication(而不是NSApplication),因此我推断您正在使用Cocoa Touch(用于iPhone和iPod Touch),因此您可能对可用于在应用程序之间共享数据的机制感兴趣。有许多种可能的方法,包括自定义URL处理程序(允许一个应用程序使用某些特定参数启动另一个应用程序),或使用依赖于网络的同步机制,在该机制中,您将两个应用程序中的数据存储在共享服务器上的某个位置上。互联网。但是,您应该记住:


任何时候,您只有一个应用程序可以在Cocoa Touch设备上运行。因此,应用程序委托的内存中成员变量将在实例化它们的应用程序退出后立即释放(为其他应用程序让路)。
我没有办法让一个Cocoa Touch应用程序将另一个Cocoa Touch应用程序保存的数据读取到设备上。操作系统严格地将设备上运行的所有单个应用程序沙箱化,因此一个程序无法读取另一个程序保存的数据。


This question与我想您要问的类似。

关于objective-c - 访问可变数组值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1781591/

10-12 14:46