1

我看到以下代码:

@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>
4

2 回答 2

0

这对我来说没有多大意义。这段代码FViewController既实现了UIWebViewDelegate协议,又在其上创建了一个类别。这样做的唯一可能原因是您扩展 UIWebView 的场景,因此它需要额外的委托方法。如果这不是您想要做的,只需像往常一样让您的类实现委托:

@interface FViewController <UIWebViewDelegate> 

还可以查看这个问题和答案:Defining categories for protocols in Objective-C?

于 2013-11-04T19:46:08.707 回答
0

此代码的作者正在创建一个类别FViewController,使其符合UIWebViewDelegate. 想必这个类只实现了UIWebViewDelegate方法。如果您希望该委托的源与源的其余部分分开,这将很有用。特别是在大型类中,向类添加类别而不是将其放在类定义中可以使所有内容更具可读性。这些类别可以位于单独的源文件中,从而将类的核心功能留在该类的主实现文件中。

于 2013-11-04T19:53:26.787 回答