Viewcontroller Dealloc方法永远不会被调用
我知道有这样的问题很多。我读了所有。我的问题很简单。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。在乐器分配屏幕中,每次切换都会增加内存。
什么问题,我找不到?
当对象的(这里是它的viewcontroller对象)从内存中滑出时,dealloc调用。但在这种情况下,您必须呈现视图控制器才能调用viewwilldisappear并且diddisappear。
在故事板,如果你想从内存中完全删除这些视图控制器ü应该呼吁放松赛格瑞
非常感谢。它适用于secondViewController。有没有办法让它适用于主视图控制器? –
但你为什么要这么做。因为你的应用程序中会随时出现一个视图控制器。你能解释一下确切的场景吗? – va05
我实际上并不需要。只是好奇:)再次感谢,拯救了我的生命 –
当视图控制器驳回了视图控制器的dealloc只调用。所以你的主视图控制器永远不会被释放。如果你有两个视图控制器,那么你没有一个单一的视图应用程序。如果你有按钮和两个视图控制器,你怎么能不碰初始代码?提供相关细节或者没有人可以帮助你。 – rmaddy
很好,但问题是什么?如果你离开这个视图控制器(弹出它,或解散它),并且它的dealloc没有被调用,你有一个保留周期和内存泄漏,你需要修复它。如果你不愿意谈论具体的代码,你期望在这里得到什么样的帮助? – matt
对不起,我会尽我所能。我编辑了这个问题。 @rmaddy –