2013-11-04 42 views
1

我看到下面的代碼:類別和UIWebViewDelegate

@interface FViewController (UIWebViewDelegate) <UIWebViewDelegate> 
@end 

@implementation FViewController 

@end 


@implementation FViewController (UIWebViewDelegate) 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 

} 

..... 

@end 

基本上,FViewController用於顯示網絡圖。將其作爲上述類別的目的是什麼?

而且這是什麼呢:

@interface FViewController (UIWebViewDelegate) <UIWebViewDelegate> 
+0

檢查出這個問題的答案http://stackoverflow.com/questions/3499704/difference-between-category-and-class-extension –

回答

0

這沒有多大意義了我。此代碼使FViewController都實現了UIWebViewDelegate協議,並在其上創建一個類別。這樣做的唯一可能原因是您擴展了UIWebView的場景,因此需要額外的委託方法。如果這不是你想要做什麼,只是讓你的類實現委託,按照往常一樣:

@interface FViewController <UIWebViewDelegate> 

退房也是這個問題,回答:Defining categories for protocols in Objective-C?

+0

不正確,'UIWebViewDelegate'沒有擴展。這是一個聲明自己符合'UIWebViewDelegate'的類別。 –

+0

對不起,你說得對。這是一個類別。我會修改我的答案。 – Macondo2Seattle

0

這段代碼的作者是創造一個FViewController,使其符合UIWebViewDelegate。據推測,這個類別只實現了UIWebViewDelegate方法。如果您希望代理的源代碼與源代碼的其他代碼分離,那麼這很有用。特別是在大類中,向類中添加類別而不是將其放入類定義中可以使所有內容更具可讀性。這些類別可以位於不同的源文件中,這會將類的核心功能留在該類的主實現文件中。