我正在编写一个带有三个视图控制器的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”。
我做错了什么?
答案 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行之后放一个断点,看看它是否显示了一个内存地址。