2011-01-09 20 views
3

インターフェイスビルダーでUIButtonを作成するときにxcodeで計測器アプリケーションを実行しているときにメモリリークが発生する理由を調べようとしています。instrument:UIButtonを作成するときにメモリリークが発生する

これは私がメモリリークを作成した方法です。

新しいアプリケーションを開き、インターフェイスビルダーにmyAppViewController.xibファイルを開きました。 背景を黒に変更しました。 UIButtonを追加し、タイトルを "foo"に変更しました。 を保存して終了します。ここで

#import "miPlanNewViewController.h" 

@implementation miPlanNewViewController 
@synthesize tasksProjects; 

... 
//the normal methods you get 
... 
- (void)dealloc { 
    [super dealloc]; 
} 
@end 

は私が取得しています何のスクリーンショットです:私は、次のを持っているmyAppViewController.mファイルに

#import <UIKit/UIKit.h> 

@interface miPlanNewViewController : UIViewController { 
    IBOutlet UIButton *tasksProjects; 
} 
@property(nonatomic, retain) IBOutlet UIButton *tasksProjects; 
@end 

を以下しているmyAppViewController.hファイルで

楽器の瞬間

alt text alt text

私はしかし、気づくことの一つ....

私はインターフェイスビルダーではまだuibuttonにコンセントを接続し、しかし、私はインターフェイスビルダーからUIButtonを削除すると、保存されていません、そして楽器でプログラムをやり直してみると、どんな種類のリークもまったくありません。

誰かが何が起こっているのか、どうすればこの問題を解決できるか説明してください。ありがとうございました。

+1

これは、シミュレータではなくデバイスでテストするときに表示されますか? Appleの推奨事項に従って、iOSシミュレータをメモリリークチェックに使用しないでください。シミュレータは、デバイスが動作しない場所でリークするためです。 – lxt

+0

...私は参照してください。しかし、私の他のプロジェクトでは、同じ場所でシミュレータがリークし、ビュー間で切り替わったときにアプリケーションが閉じてしまうことがあります。シミュレータ上の私もこのためですか?確かにシミュレータは私のアプリを閉じてはいけません。時には、私はteのexc_bad_accessの警告を見ることができますシミュレータがほとんどの場合には、リークを意味する終了? – Pavan

+0

あなたのアプリがメモリの問題のため閉鎖されている場合、上に見ているリークのためになることはありません。それは128バイトしか漏れていない、それは何もない。あなたは何千もの時間を漏らすことができ、まだメモリの警告を得ることはできません。私が言っていることは、*あなたはメモリデバッグのためにシミュレータを使うべきではないということです。シミュレータはデバイスに何が起こっているかを反映しません。メモリリークテストやデバッグには、デバイスを使用する必要があります。 – lxt

答えて

2
  • まず、プロパティをリリースしていません。 deallocで あなたは [tasksProjects release];を有するべきであり、viewDidUnloadに、あなたがメモリリークのチェックのためのシミュレータを使用すべきではないmetioned LXTとして、第二にself.taskProjects = nil;
  • を持つ必要があります。
  • 第3に、デバッグしないリリースをビルドしていることを確認します。
関連する問題