【问题标题】:Categories and UIWebViewDelegate类别和 UIWebViewDelegate
【发布时间】:2013-11-05 04:31:46
【问题描述】:

我看到以下代码:

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

【问题讨论】:

标签: ios objective-c


【解决方案1】:

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

@interface FViewController <UIWebViewDelegate> 

还请查看此问题和答案:Defining categories for protocols in Objective-C?

【讨论】:

  • 不正确,UIWebViewDelegate 未扩展。这是一个声明自己符合UIWebViewDelegate 的类别。
  • 抱歉,您当然是对的。这是一个类别。我会修改我的答案。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    相关资源
    最近更新 更多