类别和UIWebViewDelegate

时间:2013-11-04 19:24:08

标签: ios objective-c

我看到以下代码:

@interface FViewController (UIWebViewDelegate) <UIWebViewDelegate>
@end

@implementation FViewController

@end


@implementation FViewController (UIWebViewDelegate)

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

}

.....

@end

基本上,FViewController用于显示Web视图。将其作为上述类别的目的是什么?

这又是做什么的:

@interface FViewController (UIWebViewDelegate) <UIWebViewDelegate>

2 个答案:

答案 0 :(得分:0)

这对我来说没什么意义。此代码使FViewController都实现UIWebViewDelegate协议,并在其上创建一个类别。这样做的唯一可能原因是您扩展UIWebView的场景,因此它需要额外的委托方法。如果这不是您想要做的,只需按照惯例,让您的类实现委托:

@interface FViewController <UIWebViewDelegate> 

同时查看此问题并回答:Defining categories for protocols in Objective-C?

答案 1 :(得分:0)

此代码的作者正在FViewController上创建一个类别,使其符合UIWebViewDelegate。据推测,此类别仅实现UIWebViewDelegate方法。如果您希望该委托的源与源的其余部分分开,那么这将非常有用。特别是在大型类中,向类中添加类别而不是将其放在类定义中可以使一切更具可读性。这些类别可以在单独的源文件中,这样就可以在该类的主实现文件中保留该类的核心功能。