在类函数中使用@synchronized(self){...}

Max*_*Max 10 cocoa cocoa-touch objective-c ios

在一个类方法中,我一直在使用@synchronized带有信号量的块self.

+(void)someFunction {
    @synchronized(self) {
         /* some code */
    }
}
Run Code Online (Sandbox Code Playgroud)

它似乎是有效的代码,至少编译器不会给我任何不好的反馈.我的问题是:self这里有什么?据我所知,该@synchronized块无效,但它也没有崩溃.

我只是好奇地问.

Fre*_*eer 13

self在这个实例中引用的是类,而不是实例.在ObjC中,类本身就是对象.

  • 类对象是元类的实例,ObjC运行时自动创建.类的"类方法"实际上只是元类的实例方法,这就是类对象响应所有这些方法的原因. (7认同)
  • 如果一个类是一个对象,它的实例是什么? (3认同)