以下の様に書くことができるとのこと。
@protocol ConvenienceConstructorこの場合、+[Clazz defaultObject] を介して取得したインスタンスのクラスは Clazz だとclangが推論する(他のクラス型で受け取ろうとすると警告が出る)。
+ (instancetype)defaultObject;
@end
@interface Clazz : NSObject <ConvenienceConstructor>
@end
Clang Language Extensions に解説が出ててた。
A method with a related result type can be declared by using the type instancetype as its result type. instancetype is a contextual keyword that is only permitted in the result type of an Objective-C method, e.g.
@interface A
+ (instancetype)constructAnA;
@end