我有很多这样的方法:
-(NSObject *)theObject
{
static NSObject *obj = nil;
static dispatch_once_t onceToken = 0;
dispatch_once(&onceToken, ^{
obj = [[NSObject alloc] init];
atexit_b (^{
[obj release], obj = nil;
});
});
return obj;
}
我认为使用的最初目的atexit_b
是成为一个好公民并在应用程序结束之前释放使用的内存:)。但是,AFAIK,无论如何,当我的应用程序退出(或终止等)时,运行时将重新收集所有内存。
我可以一直假设吗?或者它可能取决于操作系统/运行时/某些实现?
在我的特殊情况下,我在应用程序周围有几个(比如说几十个)atexit_b
调用,所以这意味着一些内存被用来做一些不需要的事情。
这是真的?如果是这样,那么这是否意味着我不需要 atexit_b 调用?