0

ユーザーがインスタンス化してはならない疑似抽象基本クラスがあるとします。基本的に、クラスで init を呼び出そうとしたり、具体的なインスタンスの 1 つをデフォルト値で返そうとしたときに、警告をスローしたいと考えています。

ただし、その基本クラスの具体的な実装では[super init]、初期化子を呼び出す必要があります。もちろんそれは許されるべきです。

これについてどうすればよいでしょうか?

私はこれでいいと思っていました:

@implementation KTPhysicsShape
-(id) init
{
    // throw exception here or return concrete instance with default values
}

// this is what subclasses would call in place of [super init]:
-(id) internal_initFromSubclass
{
    return [super init];
}
@end

このアプローチに関する懸念はありますか?init他の人がまだ内部メソッドを呼び出すことができることは知っていますが、ユーザーが最初に呼び出そうとするものであるため、許可しないことを主に懸念しています.

4

2 に答える 2