2012-03-28 11 views
-1

私のオブジェクトは生きていて、私は確信していませんなぜですか?理由は明らかですが、私も緑色のです。私は楽器の割り当てを見ているとメモリが解放されることはありません..なぜ私のオブジェクトはまだ生きていますか?

私のヘッダーファイルが添付されています。私はここでどのようにビジネスをしなければならないのですか?アドバイスや提案をありがとう。

FYI - これはxcode 4.3で開発されたios5用です。 ARCが有効になります。

** EDITS /追加**

  • このUIViewのは、私は完全に別のビューコントローラ(ストーリーボードセグエ経由)に切り替えた後も生きて滞在しているものです。私はそれが強い参照または放棄することができない参照だと思う?

  • 私が知る限り、このビューは決してリリースされません。

  • 私はintrumentsを使って割り当てを追跡していますnew-> allocations => target-> ios 5.1 device => recordを選択してください。そして、私が回っていくうちにグラフを見ているだけです。


#import <UIKit/UIKit.h> 
#import "ValidatedTextField.h" 

@interface LoginView : UIView { 
    NSString *loginEmail; 
    NSString *loginPassword; 
} 

@property (nonatomic, weak) IBOutlet UIView *loginView1; 
@property (nonatomic, weak) IBOutlet UIView *loginView2; 
@property (nonatomic, weak) IBOutlet UIView *loginView3; 
@property (nonatomic, weak) IBOutlet UIView *loginView4; 

@property (nonatomic, weak) IBOutlet UIView *recoverView1; 
@property (nonatomic, weak) IBOutlet UIView *recoverView2; 

@property (nonatomic, weak) IBOutlet UIScrollView *loginSV; 
@property (nonatomic, weak) IBOutlet UIScrollView *recoverSV; 

@property (nonatomic, weak) IBOutlet ValidatedTextField *signInEmailInput; 
@property (nonatomic, weak) IBOutlet ValidatedTextField *signInPassInput; 
@property (nonatomic, weak) IBOutlet ValidatedTextField *createEmailInput; 
@property (nonatomic, weak) IBOutlet ValidatedTextField *createFirstNameInput; 
@property (nonatomic, weak) IBOutlet ValidatedTextField *createLastNameInput; 
@property (nonatomic, weak) IBOutlet ValidatedTextField *passInput; 
@property (nonatomic, weak) IBOutlet ValidatedTextField *rePassInput; 
@property (nonatomic, weak) IBOutlet ValidatedTextField *recoverIDInput; 

@property (nonatomic, weak) IBOutlet UIButton *signInBtn; 
@property (nonatomic, weak) IBOutlet UIButton *forgotPassBtn; 
@property (nonatomic, weak) IBOutlet UIButton *createAccountBtn; 
@property (nonatomic, weak) IBOutlet UIButton *createBackBtn; 
@property (nonatomic, weak) IBOutlet UIButton *createContinueBtn; 
@property (nonatomic, weak) IBOutlet UIButton *passBackBtn; 
@property (nonatomic, weak) IBOutlet UIButton *passContinueBtn; 
@property (nonatomic, weak) IBOutlet UIButton *sumBackBtn; 
@property (nonatomic, weak) IBOutlet UIButton *sumSubmitBtn; 
@property (nonatomic, weak) IBOutlet UIButton *recoverBackBtn; 
@property (nonatomic, weak) IBOutlet UIButton *recoverPassBtn; 
@property (nonatomic, weak) IBOutlet UIButton *returnToSignInBtn; 

@property (nonatomic, weak) IBOutlet UILabel *signInEmailError; 
@property (nonatomic, weak) IBOutlet UILabel *createEmailError; 
@property (nonatomic, weak) IBOutlet UILabel *passwordError; 
@property (nonatomic, weak) IBOutlet UILabel *sumEmail; 
@property (nonatomic, weak) IBOutlet UILabel *sumFirstName; 
@property (nonatomic, weak) IBOutlet UILabel *sumLastName; 
@property (nonatomic, weak) IBOutlet UILabel *sumPassword; 
@property (nonatomic, weak) IBOutlet UILabel *emailedToTxt; 

-(IBAction)signInTUI:(id)sender; 
-(IBAction)forgotPassTUI:(id)sender; 
-(IBAction)createAccountTUI:(id)sender; 
-(IBAction)createBackTUI:(id)sender; 
-(IBAction)createContinueTUI:(id)sender; 
-(IBAction)passBackTUI:(id)sender; 
-(IBAction)passContinueTUI:(id)sender; 
-(IBAction)sumBackTUI:(id)sender; 
-(IBAction)sumSubmitTUI:(id)sender; 
-(IBAction)recoverBackTUI:(id)sender; 
-(IBAction)recoverPassTUI:(id)sender; 
-(IBAction)returnToSignInTUI:(id)sender; 

@end 
+0

どのオブジェクトが生きていて、なぜ生きてはいけないと思いますか? – mattjgalloway

+0

ビューは公開されていますか? –

+0

割り振りをどのように追跡していますか?割り振り機器には3つのモードがあります。リーク機器を使用すると、どのオブジェクトがリークしたかと、ライフサイクルの詳細が正確に表示されます –

答えて

3

このUIViewのは、私は完全に別のビューコントローラ(ストーリーボードセグエ経由)に切り替えた後も生きて滞在しているものです。私はそれが強い参照または放棄することができない参照だと思う?

私はあなたがナビゲーションコントローラのスタックにプッシュとしてそれをINGのセグエ-しているか、モーダル提示しているか何かということを意味し、ここで想定しています:

それは必ずしも割り当て解除すべきでないときあなたは新しいView Controllerに行きます。元のビューコントローラ、したがってそのビュー、したがってカスタムビューは、メモリが不足しているためUIKitがそれを殺すことを決定するまで、引き続き有効です。その時点で、ビューコントローラオブジェクトはまだ生きていますが、そのビューはアンロードされ、viewDidUnloadが表示されます。任意のナビゲーションコントローラー/タブコントローラーから完全にそのビューコントローラーを削除するとき/モーダルの場合はそれを閉じると、完全に破棄されます。

+0

意味があります。私は 'viewDidUnload'が警告をシミュレートした後に呼び出されていないことを知りました。しかし、 'viewDidLoad'はインスタンス化されるたびにいつも呼び出されます。だから明らかに素晴らしいメモリリークがあります。次のステップの推奨事項はありますか? PSは答えに感謝します。 – Jacksonkr

+0

FYI 'dealloc'が呼び出されています(メモリ警告がなくても)。それが知っていると分かりませんが、重要な情報のようです。 – Jacksonkr

+0

'viewDidUnload'は' dealloc'の前に必ずしも呼び出されるとは限りません。 – mattjgalloway

関連する問題