Foo
を継承しUIViewController
て実装するクラスがありUIWebViewDelegate
ます。新しいクラスから継承しFoo
、古いwebViewDidFinishLoad
メソッドを拡張できますか?webViewDidFinishLoad
コードを実行してから、スーパークラスからを呼び出す必要があります。
質問する
570 次
3 に答える
4
答えはイエスです-私はこれをいくつかの場所で自分で行います。したがって、Fooはプロトコルを実装し、これはインターフェイスファイルに記述されています。次に、Fooのサブクラスである新しいクラスGooを作成できます。Fooはプロトコルを実装すると公に述べているので、Gooもそれを実装していると宣言されます。
そのプロトコルに必須メソッドがある場合、コンパイラーはFooがそれらを実装していると想定するため、Gooの一部またはすべてのメソッドをオーバーライドできます。(私と同じように)「[supersomeMethod]」を呼び出して、必要に応じてFooにもアクションを実行させることができます。
于 2012-10-02T11:28:58.453 に答える
0
プロトコルを実装した後でメソッドをオーバーライドし、次のように動作を変更または拡張できます。
Foo.h
Foo : UIViewController {}
- (void)customWebViewDidFinishLoad:(UIWebView *)webView;
Foo.m
- (void)webViewDidFinishLoad:(UIWebView *)theWebView {
[self customWebViewDidFinishLoad:self.webView];
}
// Override this method in Bar.m
- (void)customWebViewDidFinishLoad:(UIWebView *)webView {
// Default behaviour
}
Bar.h
Bar : Foo
Bar.m
- (void)customWebViewDidFinishLoad:(UIWebView *)webView {
[super customWebViewDidFinishLoad:webView];
//Extend the behaviour here
}
于 2012-10-02T11:30:27.093 に答える
0
webViewDidFinishLoadはデリゲートです。次のようにして、別のクラスを拡張できます。
Foo : anotherClass
しかし、デリゲートは内で呼び出されます
<UIWebViewDelegate>
お役に立てれば。
于 2012-10-02T11:21:40.493 に答える