在Objective-C中,您可以使用@synchronized
构造将块声明为在某个对象上进行同步。它看起来像这样:
@synchronized (self) {
// Do something useful
}
但是,我很好奇当你有一个静态方法(self
而不是+
)时,-
究竟指的是什么。我尝试查看Apple文档,他们暗示它没问题,但是没有真正解释它。我知道它有效,我只是好奇它意味着什么。
答案 0 :(得分:28)
self
引用类对象。
答案 1 :(得分:13)
在Objective-C中self
由上下文决定。在实例方法中,这将是被调用的实例。在静态方法中,它将是类对象本身(即实例方法中[self class]
的结果)
答案 2 :(得分:0)
根据上面的答案,请记住,如果一个线程使用@synchronized(self)调用实例方法,而另一个线程使用@synchronized(self)调用类方法,则两个调用之间不会发生同步,因为他们使用不同的对象进行同步。