在objective-c中,我知道静态变量(应该?)在程序的生命周期内保留其值。但如果它存储指针,它在ARC中算作强吗?我是否可以依赖它并确保在将实例分配给静态变量后永远不会离开堆?
static ClassA* shared;
-(id)init
{
if (self=[super init]) {
shared=self;
}
return self;
}
答案 0 :(得分:15)
是的,一旦分配,你就可以依赖它。
Transitioning to ARC Release Notes州:
在ARC下,strong是对象类型的默认值。
然后:
__ strong是默认值。只要存在指向它的强指针,对象就会保持“活着”。
假设您的static
指针引用该对象,它将保持“活着”状态。指针的范围(无论是全局,堆栈上的指针还是实例变量)都没有区别。
答案 1 :(得分:0)
看起来你应该只是实现一个Singleton,然后你可以通过将实例设置为nil来摆脱它。