当前位置:  开发笔记 > IOS > 正文

objective-c类变量:何时调用dealloc?

如何解决《objective-c类变量:何时调用dealloc?》经验,为你挑选了1个好方法。

如果我在Objective-C中声明类变量,何时释放内存?

如果我的界面是:

@interface TestClass : NSObject
{
}

+ (NSString)instanceCount;

@end

在实施中,我宣布:

static NSString instanceCount;

如何发布此类级别变量?即什么时候dealloc在Objective-C中调用类变量?



1> e.James..:

对你的问题的简短回答是:"当程序退出时."

静态变量在程序的最开始,在main()函数开始之前分配.同样,它们将在main()退出后不久在程序的最后发布.这个内存管理由Objective-C运行时处理,这一切都发生在幕后.

如果您试图监控此行为,您可能不会有太多运气.例如,如果您在自定义类中执行了以下操作,然后将该类用作另一个类的静态成员:

- (void)dealloc
{
    NSLog(@"I am being deallocated");
    [super dealloc];
}

您永远不会在日志中看到此消息.这有几个原因.一,所需的变量NSLog()可能已经被解除分配,作为正常关机程序的一部分.第二,因为运行时系统可以简单地一次性释放所有剩余的内存,而无需调用dealloc方法.

如果您的自定义类在其dealloc方法中执行重要操作,则可能会出现问题.如果是这种情况,请考虑编写一个自定义cleanup方法,在程序退出之前调用这些对象.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有