在目标C,可以声明一个块作为通过使用@synchronized构建一些物体上是同步的。它看起来是这样的:

@synchronized (self) {
    // Do something useful
}

不过,我很好奇,究竟是什么self是指当你有一个静态方法(+而不是-)来。我试图寻找通过苹果的文档,他们暗示它是OK,但真的不解释它。我知道它的作品,我只是好奇,这意味着什么。

有帮助吗?

解决方案

一类(静态)方法的内部self指对类对象。

其他提示

在目标C self由上下文确定的。在一个实例方法,这将是被称为实例。在静态方法中,这将是类对象本身(即,在一个实例方法[self class]的结果)

通过上面的答案,只要记住,如果一个线程调用使用@synchronized(个体)的实例方法,和另一个线程调用使用@synchronized(个体)的一类方法,没有同步将在两个通话之间发生,因为他们使用了同步不同的对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top