This is correct behavior. foo.method
is syntactic sugar for [foo method]
—a straight conversion with identical semantics. Similarly foo.prop = bar
is syntactic sugar for [foo setProp:bar]
, again with identical semantics. This transformation is implemented in the compiler. Thus you can use dot notation to call 0-parameter methods as in foo.doSomething
instead of [foo doSomething]
. Of course, if you do this, you are evil.
The fact that the callee is a class instance doesn’t mater because in Objective-C, classes are also objects. Using dot notation on a class calls the parameterless method on that class.
Dot notation is described in the Objective-C Programming Language document.