我有这段代码:
@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。我确实有另一个@interface 方法doSomething。编译器以某种方式假定 initWithInt: 返回 instancetype 而不是 id。这有什么规则?在什么情况下,编译器假定方法返回实例类型?