我已经在网络教程中创建了像Objective-C这样的单例:
+(id) sharedInstance{
static AdManager *manager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [[self alloc] init];
});
return manager;
}
持有人被释放后,static AdManager *manager
会被释放吗?
由于*manager
是在方法范围而不是字段变量中定义的,它是否也会被释放?
那么对象将在何处被保留,以便下次我们调用sharedInstance
时可以使用它?
答案 0 :(得分:2)
在方法或函数中声明为static
的变量具有全局生命周期,但只能在其声明方法/函数中按名称显示。
由于manager
是一个强变量(默认情况下),它引用的任何对象都将由此变量拥有,直到程序终止或将不同的引用(或nil
)分配给{{ 1}}。
HTH