我有一个类Foo
,它继承自UIViewController
并实现了UIWebViewDelegate
。 我可以从Foo
继承一个新类,并扩展旧的webViewDidFinishLoad
方法吗? 我需要执行一些代码,然后从超类调用webViewDidFinishLoad
。在目标c中扩展协议实现
0
A
回答
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
}
相关问题
- 1. 实现目的C协议中夫特
- 2. 在ObjC协议上的协议扩展
- 3. 扩展协议,从一类在Objective-C
- 4. UIAlertViewDelegate扩展协议
- 5. SPICE协议扩展
- 6. BitTorrent扩展协议
- 7. 协议以扩展
- 8. 扩展Radius协议
- 9. 目标C中的协议
- 10. 在协议扩展中添加目标动作失败
- 11. 在其扩展中添加协议的功能实现VS Struct符合协议并实现功能
- 12. Swift协议和协议扩展与CollectionType
- 13. Swift中协议扩展的默认实现不起作用
- 14. 当协议扩展现有的Apple API协议时,不会调用协议扩展方法
- 15. C/C++中的实现通信协议
- 16. Objective-C协议vs继承与扩展?
- 17. Swift2协议扩展NSObjectProtocol
- 18. 扩展协议缓冲区
- 19. 扩展协议栈库
- 20. 协议扩展和子类
- 21. iPhone - 扩展UIWebViewDelegae协议
- 22. 扩展OkHttp协议选择
- 23. Swift 2:UITableViewDataSource协议扩展
- 24. 协议缓冲区扩展
- 25. 扩展UICollectionViewDataSource协议以添加默认实现
- 26. Swift扩展的协议方法的默认实现
- 27. Clojure的扩展型VS DEFTYPE和协议实现
- 28. 扩展协议与枚举默认实现崩溃的Xcode
- 29. Compact Framework中的C# - Ftp协议实现
- 30. 通过扩展使现有Objective C类符合swift协议