为什么在调用类方法之前通过+(Class)类发送类?

Gus*_*son 4 objective-c

我一直在浏览Sketch,他们随Xcode一起提供的示例程序,我一直看到这样的事情(并不总是如此):

[[MyClass class] classMethod]
Run Code Online (Sandbox Code Playgroud)

现在,既然MyClass不是该类的实例,我会这样做:

[MyClass classMethod]
Run Code Online (Sandbox Code Playgroud)

作为一个实验,我能够通过覆盖+ (Class)class和返回另一个类来区分上述两个语句!如果你想要这样做,你需要以前的版本才能使用它,所以我可以看到它可能有用,但是真的吗?

这听起来像是一个可怕的想法篡改+class,但如果有的话请赐教.谢谢!


要看到一些例子,检查出的方法-copy:SKTGraphicsView.m,在发现草图程序Developer/Examples/Sketch/.

BJ *_*mer 5

在你引用的情况下,我真的没有理由打电话+class.但是,肯定有一种情况是呼叫[[self class] doSomething]而不是[[MyClass class] doSomething].在第一种情况下,[self class]如果对象已经被子类化,则可以返回正确的结果.在第二种情况下,您将始终获取MyClass类对象,这意味着MySubClass无法有效地覆盖+doSomething类方法.