iPhone,为什么我会收到内存泄漏,我该如何解决?

时间:2010-10-14 13:51:21

标签: iphone

我必须得到内存泄漏,我正在调用图库视图,视图显示我第一次使用此按钮方法,但第二次应用程序崩溃,没有真正的错误消息,我可以看到

-(IBAction)graphNavButtonPressed
{   
    UIViewController *vc = [[GraphController alloc] init];

    [vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    [self presentModalViewController:vc animated:YES];  // APP FAILS ON THIS LINE
    [vc release];
    return;
}

Program received signal:  “EXC_BAD_ACCESS”.
(gdb) bt
#0  0x02889903 in objc_msgSend ()
#1  0x0279a1c0 in __useVolatileDomainsForUser ()
#2  0x0267120c in CFPreferencesCopyAppValue ()

编辑:

在GraphController ViewDidLoad中我有这段代码。

NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
strCurrencySymbol = [myDefaults objectForKey:kNSUCurrency]; //HERE where it crashes

编辑2:

我一直在阅读有关类似问题的人,这是由于视图加载不正确造成的。 link text我做的事情可能有些奇怪。为了使用标签栏中的图形库,我加载了我的日期范围视图,然后在viewDidLoad中显示图形,然后一旦图形关闭,日期范围视图仍然存在。然后,用户可以再次单击视图以显示具有不同日期的图形。如果我不这样做,我的视图将在图表关闭时显示为空白。这就是我如何调用图表。

alt text

我在其他地方重复使用日期范围屏幕,因此可能无法显示图表。

还有其他建议吗?

2 个答案:

答案 0 :(得分:0)

我猜你不应该在同一个IBAction中释放vc对象,因为你可能在你之后使用它了吗?不确定

答案 1 :(得分:0)

您发布的代码在内存管理方面是正确的。如果您在VC(或其发布)的表示上遇到问题,请检查GraphController的init,viewDidLoad和dealloc中的内存管理。这个问题最有可能出现在那里。

此外,堆栈跟踪看起来像图形库中的某些东西正在尝试访问用户首选项并失败,所以我检查GraphController是否有CFPreferencesCopyAppValue的调用并确保它被正确调用。