我的班级Foo
继承自UIViewController
并实施了UIWebViewDelegate
。
我可以在新类中继承Foo
并扩展旧的webViewDidFinishLoad
方法吗?
我需要执行一些代码,然后从超类中调用webViewDidFinishLoad
。
答案 0 :(得分:4)
答案是肯定的 - 我自己在几个地方这样做。所以Foo实现了一个协议,这在接口文件中有说明。然后,您可以拥有一个新类Goo,它是Foo的子类。由于Foo公开表示它实现了一个协议,因此Goo也将被宣布为实现它。
如果该协议具有强制方法,则编译器将假定Foo实现它们,因此您可以覆盖Goo中的任何或所有方法。你可以(像我一样)也叫'[super someMethod]'让Foo也可以采取行动。
答案 1 :(得分:0)
webViewDidFinishLoad是一个委托,您可以通过以下方式扩展另一个类:
Foo : anotherClass
但是在
中调用了委托<UIWebViewDelegate>
希望这会有所帮助。
答案 2 :(得分: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
}