私は以下の構造を持っています。 protocol A
に適合するclass B
を取得しました。 protocol A
は、-(instancetype)initWithInt:(int)count
という指定された初期化子を定義します。私はclass B
で標準-(instancetype)init
を実装し、それはまた、クラスBに実装されている指定イニシャライザを使用するように作る行くとき、私は警告を取得していますが指定されたイニシャライザは、 'super'で指定されたイニシャライザを呼び出す必要があります。
、「指定イニシャライザは 『スーパー』に関する指定イニシャライザを呼び出す必要があります"私の指定されたイニシャライザ(IMOはinitWithInt
)は決してスーパーで指定された初期化子を呼び出すことはありません。
@protocol A
{
(instancetype) init;
(instancetype) initWithInt:(NSUInteger)count;
}
@interface B : NSObject <A>
@implementation B
- (instancetype) init {
return [self initWithInt:0];
}
- (instancetype) initWithInt:(NSUInteger)count {
self = [super init];
return self;
}
コンパイラがこの特定のケースでこの警告を省略する理由は何ですか?
どういうのですか? – matt
@matt質問セクションを更新しました。 – sramij
このプロトコルをどのように使用しますか? – Willeke