This is correct; @objc
protocols can have init
s and class methods, and Self
in return type position only. None of these stop a protocol from being used as an existential, or an @objc
protocol from self-conforming.
(The limitation on Self
corresponds to instancetype
being return-type-only in Objective-C; using Self
as a parameter or var type in an @objc
protocol declared in C causes a because its type cannot be represented in Objective-C
error.)