2010-11-25 9 views
0

親愛なることに、私は約60のビューでナビゲーションベースのアプリを持っている。iPhoneのアプリケーションがメモリ不足でクラッシュするがシミュレータで正常に動作する

私は以下を実行しました: 1.ビルドと分析:bulidは問題なしで成功しました。 2.機器の割り当てとリーク:リークがありません。

しかし、アプリはiPhoneやiPadでクラッシュしましたが、シミュレータで正常に動作します。 クラッシュは約50番目のビューで発生します。 クラッシュレポートはありませんが、crashreporterフォルダにLowMemory.logがあります。

私は誰が間違っている可能性がどのような考えを持っています4.2

に私のiPhoneとiPadをアップグレードしましたか? 私は一週間読んでトラブルシューティングをしています。

すべての返信いただきありがとうございます。

私のアプリにはcontentViewControllerというルートビューがあり、ここから4つのクイズに移動できます。

これはルートビューに戻るためのコードです。ビューをプッシュするための

- (void)goHome { 
UIAlertView *alert = [[UIAlertView alloc] 
         initWithTitle: @"Warning" 
         message: @"Proceed?" 
         delegate: self 
         cancelButtonTitle:@"Yes" 
         otherButtonTitles:@"No",nil]; 
[alert show]; 
[alert release]; 

}

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
[[self navigationController] setNavigationBarHidden:NO animated:YES]; 
if (buttonIndex == 0) { 
    NSArray * subviews = [self.view subviews]; 
    [subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; 
    self.view = nil; 
    if (self.contentViewController == nil) 
    { 
     ContentViewController *aViewController = [[ContentViewController alloc] 
                initWithNibName:@"ContentViewController" bundle:[NSBundle mainBundle]]; 
     self.contentViewController = aViewController; 
     [aViewController release]; 
    } 
    [self.navigationController pushViewController:self.contentViewController animated:YES]; 
} 

}

サンプルコード:

-(IBAction) buttonArrowClicked:(id)sender { 
NSURL *tapSound = [[NSBundle mainBundle] URLForResource: @"click" 
              withExtension: @"aif"]; 

// Store the URL as a CFURLRef instance 
self.soundFileURLRef = (CFURLRef) [tapSound retain]; 

// Create a system sound object representing the sound file. 
AudioServicesCreateSystemSoundID (

            soundFileURLRef, 
            &soundFileObject 
           ); 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

if (![[defaults stringForKey:@"sound"] isEqualToString:@"NO"]) { 
    AudioServicesPlaySystemSound (soundFileObject); 
}  

if (self.exercise2ViewController == nil) 
{ 
    Exercise2ViewController *aViewController = [[Exercise2ViewController alloc] 
               initWithNibName:@"Exercise2ViewController" bundle:[NSBundle mainBundle]]; 
    self.exercise2ViewController = aViewController; 
    [aViewController release]; 
} 
[self.navigationController pushViewController:self.exercise2ViewController animated:YES]; 

}

答えて

3

の下で実行されているときは、通常、メモリの問題に実行されませんシムルこれらのエラーはこのプラットフォームで自動的には発生しません。

ただし、シミュレータには、低メモリイベントを手動でトリガできる機能があります。これが実際にデバイス上のクラッシュの原因である場合は、このようにシミュレータで同じバグを引き起こす可能性があります。

0

ビューコントローラをどのようにプッシュするかについていくつかのコードを共有すると、他の人がこれを手助けすることができます。

次の操作を行うことにより、より簡単にビューコントローラを根絶するために開くことができます:

[self.navigationController popToRootViewControllerAnimated:YES]; 

をあなたが実際にあなたが共有しているコードであなたのルートビューコントローラの新しいインスタンスを推進しています。

+0

すべての返信いただきありがとうございます。私はあなたのレビューのいくつかのコードを追加しました – Ian

+0

申し訳ありませんが私はダブル投稿したことに気づいた。 http://stackoverflow.com/questions/4281713/iphone-app-crashes-due-to-low-memory-but-works-fine-in-simulator – Ian

+0

私を保存してくれてありがとう、ありがとう。私のアプリは今クラッシュしていないようです! デバッグモードで実行してもデバイスでクラッシュします。 しかし、接続されていると、デバイスでうまく動作します。これは正常ですか? – Ian

関連する問題