@synchronized在静态方法中

Ita*_*tay 17 objective-c synchronized thread-safety

在Objective-C中,您可以使用@synchronized构造将块声明为在某个对象上进行同步.它看起来像这样:

@synchronized (self) {
    // Do something useful
}
Run Code Online (Sandbox Code Playgroud)

但是,我很好奇self当你有一个静态方法(+而不是-)时究竟是指什么.我尝试查看Apple文档,他们暗示它没问题,但是没有真正解释它.我知道它有效,我只是好奇它意味着什么.

Wev*_*vah 28

self 类(static)方法内部引用类对象.

  • 请注意,类方法中的@synchronized(self)可能很危险,因为对于子类,self是一个不同的对象(类),因此仍然可以在这两个类之间同时访问该方法 (5认同)

Avi*_*Dov 13

Objective-C self由上下文决定.在实例方法中,这将是被调用的实例.在静态方法中,它将是类对象本身(即[self class]实例方法的结果)