2012-03-28 6 views
-1

Mein Objekt ist am Leben und ich bin mir nicht sicher warum. Ich bin sicher, der Grund (die Gründe) sind offensichtlich, aber ich bin auch grün, um sie zu sehen. Ich beobachte die Zuordnungen in Instrumenten und der Speicher wird nie freigegeben.ios warum leben meine objekte noch?

Meine Header-Datei ist beigefügt. Wie sollte ich mich hier um Geschäfte kümmern? Danke für Ratschläge/Vorschläge.

FYI - Dies ist für ios5 mit xcode 4.3 entwickelt. ARC ist aktiviert.

** EDITS/ADDITIONS **

  • Diese UIView ist das, was am Leben ist zu bleiben, auch nachdem ich zu einem ganz anderen View-Controller wechseln (via Storyboard segue). Ich vermute, dass es eine starke Referenz oder eine Referenz ist, die nicht losgelassen werden kann?

  • Soweit ich das beurteilen kann, wird diese Ansicht nie veröffentlicht.

  • Ich Verfolgen Zuordnungen mit Intruments new-> Zuordnungen => Wählen Sie Ziel-> iOS 5.1 Gerät => aufnehmen. Und schaue einfach die Grafik an, während ich mich berühre.


#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

Welche Objekte sind am Leben und warum sollten sie nicht am Leben sein? – mattjgalloway

+0

Wird Ihre Ansicht jemals veröffentlicht? –

+0

Wie verfolgen Sie Zuweisungen? .. Es gibt 3 verschiedene Modi im Zuordnungsinstrument. Wenn Sie das Lecks-Instrument verwenden, zeigt es Ihnen genau, welches Objekt durchgesickert ist und Details seines Lebenszyklus –

Antwort

3

Diese UIView ist das, was am Leben ist zu bleiben, auch nachdem ich zu einem ganz anderen View-Controller wechseln (via Storyboard segue). Ich vermute, dass es eine starke Referenz oder eine Referenz ist, die nicht losgelassen werden kann?

Ich gehe davon hier meinen Sie, dass Sie Segue-ing es als Push auf einen Navigation-Controller-Stack oder Sie präsentieren modal oder etwas:

Es sollte nicht unbedingt werden aufgehoben, wenn Sie gehen zu einem neuen View-Controller. Der ursprüngliche View-Controller, also seine Ansicht und damit auch Ihre benutzerdefinierte Ansicht, bleiben so lange am Leben, bis UIKit sich entschließt, sie zu beenden, weil der Speicher knapp wird. An diesem Punkt würde Ihr View-Controller-Objekt noch am Leben bleiben, aber seine Ansicht würde entladen werden und Sie würden die viewDidUnload erhalten. Nur wenn Sie diesen Ansichts-Controller vollständig von einem Navigations-Controller/Tab-Controller entfernen/wenn er modal ist, wird er vollständig zerstört.

+0

Sinn macht. Ich sehe jetzt, dass 'viewDidUnload' nicht nach dem Simulieren einer Warnung aufgerufen wird. 'ViewDidLoad' wird jedoch jedes Mal bei der Instanziierung wie erwartet aufgerufen. Also anscheinend habe ich ein schönes Speicherleck. Irgendwelche Empfehlungen zu den nächsten Schritten? PS Danke für die Antwort. – Jacksonkr

+0

FYI 'dealloc' wird aufgerufen (auch ohne Speicherwarnung). Ich bin mir nicht sicher, ob das hilfreich ist, aber es scheint wie eine wichtige Information zu sein. – Jacksonkr

+0

'viewDidUnload' wird nicht unbedingt vor' dealloc' aufgerufen. – mattjgalloway

Verwandte Themen