从不同的类访问app委托时出现问题

时间:2011-05-14 12:53:28

标签: iphone objective-c delegates

我正在编写一个带有三个视图控制器的iPhone应用程序,并在app delagate中创建了一个字典:NSMutableDictionary * dictionary;添加属性并合成。

从我的FirstViewController.m运行代码

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"Count: %i",[appDelegate.dictionary count]);

完全没有问题,我打印出计数(4)。但是,当我尝试完全相同的代码i SecondViewController.m(都在viewDidLoad方法中)时,我得到一个错误的访问错误或“SIGABRT”,即使Xcode似乎找到了正确的字典(导致它在我写它时自动完成代码) )。两个.m文件都导入了“AppDelegate.h”。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

我猜你没有看到更多的代码:
通常在这些情况下,我发现我在大小写中出错了。尝试查看构建和分析(或在XCode 4产品 - >分析中)是否出现任何警告。
此外,如果您告诉我们获得SIGBART的确切行

,将会很有帮助

答案 1 :(得分:0)

字典何时初始化?如果在尚未初始化的字典上调用“count”,则会出现错误。

是否有可能在字典初始化之前调用SecondViewController的方法,之后调用FirstViewController方法?

检查的一种方法是用以下方法替换“count”调用:

NSDictionary *dict = appDelegate.dictionary;
if (dict == nil)
    printf("\nDictionary not yet initialized");
else
    printf("\nDictionary ready to count");

或者只是在* dict行之后放一个断点,看看它是否显示了一个内存地址。