私はこのコードを持っています:
@interface Bar : UIView
- (id)initWithInt:(int)i;
@end
@implementation Bar
- (id)initWithInt:(int)i {
self = [super init];
return self;
}
@end
void func() {
[[[Bar alloc] initWithInt:10] doSomething];
}
コンパイラーは func() 関数でエラーを出します: No visible @Interface for Bar は、セレクター doSomething を宣言しません。メソッド doSomething を持つ別の @interface があります。コンパイラはどういうわけか、initWithInt: が id ではなく instancetype を返すと想定していました。これにはどのようなルールがありますか?どのような場合に、コンパイラはメソッドが instancetype を返すと想定しますか?