假设我有一个用户不应该实例化的伪抽象基类。基本上,当他们尝试在类上调用 init 或返回具有默认值的具体实例之一时,我想发出警告。
但是,该基类的具体实现必须调用[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
,因为这是用户首先尝试调用的方法。