目标 c - 静态指针是强指针吗?



在objective-c中,我知道静态变量(应该?)在程序的生命周期内保留其值。但是,如果它存储了一个指针,它在 ARC 中算不算?我是否可以依赖它并确保一旦我将实例分配给静态变量,该实例将永远不会从堆中消失?

static ClassA* shared;
-(id)init
{
   if (self=[super init]) {
       shared=self;
   }
   return self;
}

是的,一旦分配了它,您就可以依赖它。

过渡到 ARC 发行说明指出:

在 ARC 下,强是对象类型的默认值。

然后:

__strong是默认值。只要有一个指向它的强指针,一个对象就会保持"活动"。

给定static指针引用对象,它将保持"活动"。 指针的作用域(无论是全局指针、堆栈上的指针还是实例变量)没有区别。

看起来你应该只实现一个单例,然后你可以通过将实例设置为 nil 来摆脱它。

最新更新