2011-08-10 5 views
1

かなり複雑なTabBarControllerアプリケーションでメモリリークをデバッグしようとしています。そこで私はAppDelegate、FirstViewController、SecondViewControllerを持つ非常にシンプルなスケルトンアプリケーションを作成しました。各スケッチは、iOSプログラミング、The Big Nerd Ranch Guide 2nd Edの指示に従って、それぞれ別のペン先に接続しました。タブが機能し、ビューが表示されます。SimpleTabBarControllerメモリがリークする

のCALayerのUIKitのUIView _createLayerWithFrame UIImageView UIClassicController _setupWindow

EDIT:まあFWIW私は回転を有効にすると、私はまだのように回転にiPadのデバイス上のリークを取得します。私はXcodeの3.26とiOS4.3のテンプレートを使用:

表示 - >アプリ - > NO CODE添加していない - >このテンプレートのコードと回転上のiPad2 NO漏れのテスト:

// Override to allow orientations other than the default portrait orientation. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return YES; 
} 

ビュー - - > iPhone - >プロジェクトに、上記と同じ正確なコードを追加します - >テストのiPad2 SAME漏液の 表示 - > iPhone - >少し異なるコードを追加します - > iPad2のSAME漏液のテスト

// Override to allow orientations other than the default portrait orientation. 
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)x { 
    //return YES; 
    return (x== UIInterfaceOrientationPortrait) || UIInterfaceOrientationIsLandscape(x); 
} 

だから、私はiPhone4に対してテストするときにリークが発生するのを待つつもりです。これは、コードの1行の追加を必要とする非常に再現性のあるエラーです。混乱している。

答えて

-2

[tbController setViewControllers:viewControllers];の後には、配列viewControllers[viewControllers release];で解放する必要があります。

+0

あなたは正しくありません。 View viewControllerは、自動リリースされたオブジェクトです。コードを調べてください。 –

+0

彼が彼のコードのために使う言葉は、誤解を招きます。 viewControllersは配列であり、ビューではありません。彼は言う: NSArray * viewControllers = [NSArray arrayWithObjects:vc1、vc2、nil]; –

+0

ああ、私の悪い、彼の配列のように見える*は*オートレリースされています。 –

関連する問題