3

UIViewメソッドを継承したのサブクラスがあり- initWithFrame:ます。ただし、そのメソッドがサブクラスで呼び出されることは望ましくありません。サブクラスでそのメソッドを「削除」する方法はありますか?

4

1 に答える 1

7

実装したり、呼び出したりしないでください[super initWithFrame:aRect]。引数を指定doesNotRecognizeSelector:して呼び出すだけです。_cmd

- (id)initWithFrame:(CGRect)aRect
{
    [self doesNotRecognizeSelector:_cmd];
}

メソッドが返されない場合はvoid、コンパイラから警告が表示されます。

制御は非void機能の終わりに達します。

この警告を「削除」するにreturn self;は、最後の行として(この場合は)追加して、コンパイラーを満足させます。例外doesNotRecognizeSelector:が発生するため、実行時に到達することはありません。NSInvalidArgumentException

于 2012-05-27T14:22:16.787 に答える