2011-05-17 31 views
2

我得到的內存泄漏的警告時,我addsubView到當前的ViewController ....這是我的代碼..內存泄漏的警告,同時向addSubView當前視圖控制器

 NoOfGolferViewController *objNoOfGolferViewController = [[NoOfGolferViewController alloc]initWithNibName:@"NoOfGolferViewController" bundle:nil]; 
    [objNoOfGolferViewController setParent:self]; 
    [objNoOfGolferViewController.view setFrame:CGRectMake(15, 110, 290, 330)]; 
    [self.view addSubview:objNoOfGolferViewController.view]; 

,當我釋放對象

​​

通過提供EXE_BAD_ACCESS消息,應用程序崩潰。

如何解決此內存泄漏警告?

在此先感謝..

回答

3

你必須保持你的objNoOfGolferViewController對象還活着,只要它認爲是可見的或電流控制器使用。看起來最好的解決方案是將其作爲當前類的實例變量,並在其dealloc方法中發佈objNoOfGolferViewController

+2

感謝建議 – 2011-05-17 13:14:53

1

可能您正在本地聲明變量。 取而代之的是全局的,並在dealloc中釋放它。 背後的原因是當你釋放對象時,委託方法正在進行中。

您可以在刪除視圖後釋放對象。

+0

感謝建議 – 2011-05-17 13:15:41

0

通常,當您釋放已釋放的對象時,會收到此消息。我一直在使用下面的方法(在這裏發現因此在iOS4 - fast context switching)追查這些類型的問題,在過去的:

#pragma mark - RETAIN DEBUG MAGIC 
// ----------------------------------------------------------------------------- 

- (id)retain 
{ 
    NSLog(@"retain \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]); 
    return [super retain]; 
} 
- (void)release 
{ 
    NSLog(@"release \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]); 
    [super release]; 
} 
- (id)autorelease 
{ 
    NSLog(@"autorelease \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]); 
    return [super autorelease]; 
} 

我寫了這個前兩天在這裏所以使用一個類似的例子(我有問題保留併發布一些觀點)。如果您有興趣,請點擊此鏈接:Understanding iOS Instruments

祝您好運!

0

只是使它自動釋放...像下面提到

NoOfGolferViewController *objNoOfGolferViewController = [[[NoOfGolferViewController alloc]initWithNibName:@"NoOfGolferViewController" bundle:nil] autorelease];