[SomeClass self]语法有什么作用?

时间:2014-03-21 17:36:21

标签: objective-c cocoa self

我目前正在研究Apple for Sketch提供的示例代码,我偶然发现了一些我以前没见过的语法。 它位于SKTGraphicView.m

函数的moveSelectedGraphicsWithEvent:
NSRect selBounds = [[SKTGraphic self] boundsOfGraphics:selGraphics];

我之前从未见过[SomeClass self]语法。在这种情况下,selfNSView的子类,boundsOfGraphics:SKTGraphic的类方法,NSObject是<{1}}的子类。

1 个答案:

答案 0 :(得分:8)

self 协议中定义了NSObject方法,因此每个对象都是类的实例或类对象(类型为Class} )支持该方法。它只返回它所调用的对象,即:

- (id) self { return self; }

因此实例上的self返回实例,而类对象返回类对象。

因此,以下内容:[x self] == x对于所有实例和类对象YES都是x

你的行等同于:

NSRect selBounds = [SKTGraphic boundsOfGraphics:selGraphics];

这就是它的作用。至于为什么Apple以这种方式写它,这是一个不同的问题...