首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dealloc不被呼叫

Dealloc不被呼叫
EN

Stack Overflow用户
提问于 2014-11-04 03:27:34
回答 1查看 5.4K关注 0票数 0

我正在尝试调试为什么我的dealloc覆盖没有在我的视图控制器上被调用。

我有一个视图控制器,它是通过故事板设置的。我已经覆盖了所有3种init方法:

代码语言:javascript
复制
-(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];
}

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

但是,当我远离视图时,控制器dealloc就不会被调用。viewDidDisappear确实会接到电话。在视图didDisappear中,我记录引用计数:

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

参考计数为5。

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

从5跳到8,然后再跳到5。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-04 04:22:19

是否有指向viewController对象的实例变量?如果仍然有指针,即使视图不在屏幕上,它也不会减少保留计数。

不寻常的保留数是正常的。唯一重要的是0。如果为0,则将取消分配。不能保证一个指针意味着保留计数为1。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26727246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档