@synchronized在静态方法中
-
16-09-2019 - |
题
在目标C,可以声明一个块作为通过使用@synchronized
构建一些物体上是同步的。它看起来是这样的:
@synchronized (self) {
// Do something useful
}
不过,我很好奇,究竟是什么self
是指当你有一个静态方法(+
而不是-
)来。我试图寻找通过苹果的文档,他们暗示它是OK,但真的不解释它。我知道它的作品,我只是好奇,这意味着什么。
解决方案
一类(静态)方法的内部self
指对类对象。
其他提示
在目标C self
由上下文确定的。在一个实例方法,这将是被称为实例。在静态方法中,这将是类对象本身(即,在一个实例方法[self class]
的结果)
通过上面的答案,只要记住,如果一个线程调用使用@synchronized(个体)的实例方法,和另一个线程调用使用@synchronized(个体)的一类方法,没有同步将在两个通话之间发生,因为他们使用了同步不同的对象。
不隶属于 StackOverflow