我有一個類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協議