2012-10-02 44 views
0

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

回答

4

答案是肯定的 - 我在几个地方自己做这个。所以Foo实现了一个协议,这在接口文件中有说明。然后你可以有一个新的类,Goo,它是Foo的一个子类。由于Foo公开声明它实现了一个协议,因此Goo也将被宣布为实现它。

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

0

webViewDidFinishLoad是一个代表,你可以通过做扩展另一个类:

Foo : anotherClass 

,但委托的

<UIWebViewDelegate> 

希望这有助于中调用。

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 
}