gpt4 book ai didi

ios - Dealloc 没有被调用

转载 作者:行者123 更新时间:2023-11-28 21:55:33 28 4
gpt4 key购买 nike

我正在尝试调试为什么我的 dealloc 覆盖没有在我的一个 View Controller 上被调用。

我有一个通过 Storyboard设置的 View Controller 。我已经重写了所有 3 个初始化方法:

-(id) initWithCoder:(NSCoder *)aDecoder {
NSLog(@"TestViewController init with coder");

return [super initWithCoder:aDecoder];
}

-(id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
NSLog(@"TestViewController init with nib name");

return [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
}

- (id) init {
NSLog(@"TestViewController init");

return [super init];
}

当我导航到我的应用程序中的上述 View 时,我看到“initWithCoder”按预期被调用。这是我看到的唯一调用的 init 方法。当我导航到我的 View 时它会被调用一次。

然而,当我离开我的 View Controller 时,dealloc 不会被调用。 viewDidDisappear 确实被调用了。在 View didDisappear 中,我记录了引用计数:

-(void) viewDidDisappear:(BOOL)animated {
NSLog(@"TestViewController Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef) self));
[super viewDidDisappear:animated];
}

引用计数为 5。

我还在 viewDidLoad 中记录了引用计数,它是 8。

所以它从 5 跳到 8,然后又跳回到 5。

我只看到调用了一次的 init 方法。我什至不知道从哪里开始寻找....

最佳答案

你有一个实例变量指向你的 viewController 对象吗?如果您仍然有一个指针,即使 View 不在屏幕上,它也不会减少保留计数。

不正常的保留计数是正常的。唯一重要的计数是 0。如果它是 0,它将被释放。不能保证一个指针意味着保留计数为 1。

关于ios - Dealloc 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26727246/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com