Seb*_*ian 5 cocoa objective-c self
我目前正在研究Apple for Sketch提供的示例代码,我偶然发现了一些我以前从未见过的语法.它SKTGraphicView.m在功能中moveSelectedGraphicsWithEvent:
NSRect selBounds = [[SKTGraphic self] boundsOfGraphics:selGraphics];
Run Code Online (Sandbox Code Playgroud)
我以前从未见过[SomeClass self]语法.在这种情况下,self是一个子类,NSView并且boundsOfGraphics:是一个类方法,SKTGraphic它是其子类NSObject.
该self方法在NSObject 协议中定义,因此每个对象都是类的实例或类对象(类型Class)支持该方法.它只返回它被调用的对象,即:
- (id) self { return self; }
Run Code Online (Sandbox Code Playgroud)
因此self,在实例上返回实例,并在类对象上返回类对象.
因此,以下内容适用于:[x self] == x适用YES于所有实例和类对象x
你的行相当于:
NSRect selBounds = [SKTGraphic boundsOfGraphics:selGraphics];
Run Code Online (Sandbox Code Playgroud)
这就是它的作用.至于为什么Apple用这种方式写它,这是一个不同的问题......
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |