2012年3月4日日曜日

clang 3.1 から導入された instancetype とは?



以下の様に書くことができるとのこと。
@protocol ConvenienceConstructor

+ (instancetype)defaultObject;

@end

@interface Clazz : NSObject <ConvenienceConstructor>

@end
この場合、+[Clazz defaultObject] を介して取得したインスタンスのクラスは Clazz だとclangが推論する(他のクラス型で受け取ろうとすると警告が出る)。


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

0 件のコメント:

コメントを投稿