2015-05-19 85 views
0

我知道有這樣的問題很多。我讀了所有。我的問題很簡單。Viewcontroller Dealloc方法永遠不會被調用

我從xcode文件>新建項目>單一視圖應用程序創建了單一視圖應用程序。 然後,我在故事板和一個名爲secondViewController的新viewcontroller類中添加了第二個uiviewcontroller。我將一個按鈕拖到主視圖控制器,並通過ctrl +拖動到故事板上的secondViewController。我在secondViewController中做了相反的處理。並且用nslog添加dealloc functins到類文件。我還添加了對uibuttons的弱引用

視圖更改時,每個viewcontroller的Dealloc方法都不會被調用。

ViewController.m

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSLog(@"viewDidLoad 1"); 
     // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (void)dealloc { 
    NSLog(@"dealloc 1"); 
} 

SeconViewController.m

#import "SecondViewController.h" 

@interface SecondViewController() 

@end 

@implementation SecondViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (void)dealloc { 
    NSLog(@"dealloc 2"); 

} 
@end 

ARC啓用。

殭屍似乎在產品>編輯方案上被禁用。我正在使用xcode 6.2。在樂器分配屏幕中,每次切換都會增加內存。

什麼問題,我找不到?

+0

當視圖控制器駁回了視圖控制器的dealloc只調用。所以你的主視圖控制器永遠不會被釋放。如果你有兩個視圖控制器,那麼你沒有一個單一的視圖應用程序。如果你有按鈕和兩個視圖控制器,你怎麼能不碰初始代碼?提供相關細節或者沒有人可以幫助你。 – rmaddy

+0

很好,但問題是什麼?如果你離開這個視圖控制器(彈出它,或解散它),並且它的dealloc沒有被調用,你有一個保留週期和內存泄漏,你需要修復它。如果你不願意談論具體的代碼,你期望在這裏得到什麼樣的幫助? – matt

+0

對不起,我會盡我所能。我編輯了這個問題。 @rmaddy –

回答

1

當對象的(這裏是它的viewcontroller對象)從內存中滑出時,dealloc調用。但在這種情況下,您必須呈現視圖控制器才能調用viewwilldisappear並且diddisappear。

在故事板,如果你想從內存中完全刪除這些視圖控制器ü應該呼籲放鬆賽格瑞

+0

非常感謝。它適用於secondViewController。有沒有辦法讓它適用於主視圖控制器? –

+0

但你爲什麼要這麼做。因爲你的應用程序中會隨時出現一個視圖控制器。你能解釋一下確切的場景嗎? – va05

+0

我實際上並不需要。只是好奇:)再次感謝,拯救了我的生命 –

相關問題