2010-10-14 54 views
0

我必须得到一个内存泄漏,我打电话给一个图库视图,该视图显示我第一次使用这个按钮方法,但第二次应用程序崩溃,没有真正的错误信息,我可以看到。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

我真的别处重用的时间范围屏幕使图形可能不显示。

还有什么建议吗?

+0

你在GraphController中声明了一个init方法吗? – willcodejavaforfood 2010-10-14 15:12:50

+0

什么是kNSUCurrency,它是如何定义的? – tidwall 2010-10-14 18:06:09

+0

我在#define中有一个constants.h文件kNSUCurrency @“currency” – Jules 2010-10-14 18:51:03

回答

0

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

+0

多数民众赞成在奇怪的是,我试着autorelease而不是它工作了一段时间然后坠毁,我拿出了释放,现在它工作正常。我不明白为什么会发生这种情况我虽然我们总是不得不释放,如果我们使用alloc等 – Jules 2010-10-14 14:44:05

+0

因为如果你分配一个对象的内存,并释放它,而你正在使用它正常的崩溃,你有在完成对它的处理后释放对象。 – JonLOo 2010-10-14 14:46:58

+0

可能你的程序试图访问那个IBAction后的对象,所以你得到了崩溃,也许你应该在IBAction方法之外声明你的UIView控制器,在方法中分配它并在完成时释放它 – JonLOo 2010-10-14 14:49:55

0

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

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

+0

请参阅上面的编辑,不知道为什么这应该是导致崩溃? – Jules 2010-10-14 16:26:25

+0

奇数,编辑使它看起来像standardUserDefaults正在返回释放的内存。尝试通过遍历调试器来查看究竟发生了什么。 – kevboh 2010-10-14 17:08:36

+0

它绝对是那条线。 – Jules 2010-10-14 17:20:17

相关问题