Iphone 从不同类访问应用程序委托时出现问题

Iphone 从不同类访问应用程序委托时出现问题,iphone,objective-c,delegates,Iphone,Objective C,Delegates,我正在编写一个带有三个视图控制器的iPhone应用程序,并在应用程序delagate中制作了一个字典:NSMutableDictionary*dictionary;具有附加性能和合成能力 从我的FirstViewController.m运行代码 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; NSLog(@"Count: %i",[appDelegate.diction

我正在编写一个带有三个视图控制器的iPhone应用程序,并在应用程序delagate中制作了一个字典:NSMutableDictionary*dictionary;具有附加性能和合成能力

从我的FirstViewController.m运行代码

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"Count: %i",[appDelegate.dictionary count]);
一点问题也没有,我得到的计数是4。但是,当我尝试使用完全相同的代码时,我发现viewDidLoad方法中的SecondViewController.m都出现了错误的访问错误或SIGABRT,即使Xcode似乎找到了正确的字典,因为它会在我编写代码时自动完成代码。两个.m文件都导入了AppDelegate.h


我做错了什么?

没有看到更多的代码,我猜: 在这些情况下,我经常会发现我在大写方面犯了一个错误。尝试查看构建和分析或XCode 4产品->分析中是否出现任何警告。
另外,如果您能告诉我们获取SIGBART的确切行是什么时候初始化词典的,这将非常有用?如果在尚未初始化的字典上调用count,则会得到一个错误

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

检查的一种方法是将计数调用替换为:

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

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

在移到second view controller之前是否释放字典?或者字典不再存在,因为它是一个自动发布对象?当我们试图访问一个已经发布的对象时,就会出现错误的访问。不,字典实际上从来没有发布过计划稍后修复它,我也从来没有给它一个自动释放。它是NSLog@Count:%i,[appDelegate.dictionary count];这给了西格伯特。Analyze给出了很多内存泄漏警告,但我看不出这是问题所在……这在SecondViewController.m中给出了SIGABRT,但在FWC.m中没有给出:[appDelegate.dictionary count];您是否可以编辑原始问题并从SecondViewController.m放置代码?