我目前正在研究Apple for Sketch提供的示例代码,我偶然发现了一些我以前没见过的语法。
它位于SKTGraphicView.m
moveSelectedGraphicsWithEvent:
中
NSRect selBounds = [[SKTGraphic self] boundsOfGraphics:selGraphics];
我之前从未见过[SomeClass self]
语法。在这种情况下,self
是NSView
的子类,boundsOfGraphics:
是SKTGraphic
的类方法,NSObject
是<{1}}的子类。
答案 0 :(得分:8)
self
协议中定义了NSObject
方法,因此每个对象都是类的实例或类对象(类型为Class
} )支持该方法。它只返回它所调用的对象,即:
- (id) self { return self; }
因此实例上的self
返回实例,而类对象返回类对象。
因此,以下内容:[x self] == x
对于所有实例和类对象YES
都是x
你的行等同于:
NSRect selBounds = [SKTGraphic boundsOfGraphics:selGraphics];
这就是它的作用。至于为什么Apple以这种方式写它,这是一个不同的问题...