2010-12-08 8 views
-1

Ich habe einen Blick und zugewiesen, um die Ansicht erstelltSpeicherfreigabe Problem

UIView *newView=[[UIView alloc] initWithFrame:CGRectMake(0,0,320,460)]; 

in viewDidLoad Methode Viewcontroller ich den Blick auf die Viewcontroller zugewiesen habe

-(void)viewDidLoad{ 
    self.view=newView; 
    //[view release]; In this case also the application crashing 
} 

-(void)dealloc{ 
    [newView release];//IN this case also the application crashing. 
    [super dealloc]; 
} 

Das Crash-Protokoll ist dies. alt text

wie das newView freizugeben? oder der viewcontroller selbst kümmert sich um die Freigabe des newView.

+0

Der Code, den Sie gepostet haben, scheint nicht vollständig zu sein - wo ordnen Sie newView zu? Sie sollten NewView mit hoher Wahrscheinlichkeit freigeben, nachdem Sie es self.view zugewiesen haben - lesen Sie die Richtlinien zur Cocoa-Speicherverwaltung (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html). –

Antwort

0

In den meisten Fällen werden Sie wie folgt vor:

- (void) loadView { 
    // Don't call super here if you assign the view property 
    UIView *newView = [[UIView alloc] initWithFrame: [UIScreen mainScreen].applicationFrame]; 
    self.view = newView; 
    [newView release]; 
    // the view is now owned and retained by the UIViewController 
} 

Apple empfiehlt Ihnen die Ansicht zuweisen, zuordnen und lassen Sie ihn in -loadView und sorgen nicht um es in -dealloc. Dies ist wichtig in Fällen, in denen Ihre Ansicht unter Bedingungen mit wenig Arbeitsspeicher gelöscht werden kann.