0

我有一个类Foo继承自UIViewController并实现了一个UIWebViewDelegate. 我可以Foo从新类继承并扩展旧webViewDidFinishLoad方法吗?我需要执行一些代码,然后webViewDidFinishLoad从超类调用。

4

3 回答 3

4

答案是肯定的——我自己在几个地方这样做。所以 Foo 实现了一个协议,这在接口文件中有说明。然后你可以有一个新的类,Goo,它是 Foo 的一个子类。既然 Foo 已经公开声明它实现了一个协议,那么 Goo 也将被声明为实现它。

如果该协议具有强制方法,则编译器将假定 Foo 实现了它们,因此您可以覆盖 Goo 中的任何或所有方法。如果你愿意,你也可以(像我一样)调用 '[super someMethod]' 让 Foo 也采取行动。

于 2012-10-02T11:28:58.453 回答
0

webViewDidFinishLoad 是一个委托,您可以通过以下方式扩展另一个类:

Foo : anotherClass

但委托是在

<UIWebViewDelegate>

希望这可以帮助。

于 2012-10-02T11:21:40.493 回答
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
}

酒吧.h


Bar : Foo  

巴.m


- (void)customWebViewDidFinishLoad:(UIWebView *)webView {
  [super customWebViewDidFinishLoad:webView];
  //Extend the behaviour here
}
于 2012-10-02T11:30:27.093 回答